api: allow for ?full=on on /api/user/drafts (#8450)

This commit is contained in:
Thomas NOËL 2015-10-01 02:04:09 +02:00
parent 68e26d3997
commit e2b5a50b5a
2 changed files with 16 additions and 3 deletions

View File

@ -445,14 +445,17 @@ def test_user_drafts(local_user):
formdef.name = 'test'
formdef.fields = [
fields.StringField(id='0', label='foobar', varname='foobar'),
fields.StringField(id='1', label='foobar2'),]
fields.StringField(id='1', label='foobar2'),
fields.FileField(id='2', label='foobar3', varname='file'),]
formdef.store()
resp = get_app(pub).get(sign_uri('/api/user/drafts', user=local_user))
assert len(resp.json) == 0
formdata = formdef.data_class()()
formdata.data = {'0': 'foo@localhost', '1': 'xxx'}
upload = PicklableUpload('test.txt', 'text/plain', 'ascii')
upload.receive(['base64me'])
formdata.data = {'0': 'foo@localhost', '1': 'xxx', '2': upload}
formdata.user_id = local_user.id
formdata.page_no = 1
formdata.status = 'draft'
@ -463,6 +466,12 @@ def test_user_drafts(local_user):
resp2 = get_app(pub).get(sign_uri('/myspace/drafts', user=local_user))
assert len(resp.json) == 1
assert resp.json == resp2.json
assert not 'fields' in resp.json[0]
resp = get_app(pub).get(sign_uri('/api/user/drafts?full=on', user=local_user))
assert 'fields' in resp.json[0]
assert resp.json[0]['fields']['foobar'] == 'foo@localhost'
assert 'file' not in resp.json[0]['fields'] # no file export in full lists
def test_api_list_formdata(local_user):
Role.wipe()

View File

@ -398,9 +398,13 @@ class ApiUserDirectory(Directory):
'url': url,
'datetime': misc.strftime.strftime('%Y-%m-%d %H:%M:%S', form.receipt_time),
}
if get_request().form.get('full') == 'on':
d.update(form.get_json_export_dict(include_files=False))
drafts.append(d)
return json.dumps(drafts)
return json.dumps(drafts,
cls=misc.JSONEncoder,
encoding=get_publisher().site_charset)
def forms(self):
get_response().set_content_type('application/json')