api: add custom view support to geojson API (#42850)
This commit is contained in:
parent
9988c32906
commit
8d3e067c83
|
@ -2139,6 +2139,54 @@ def test_api_ods_formdata_custom_view(pub, local_user):
|
|||
assert len(ods_sheet.findall('.//{%s}table-row' % ods.NS['table'])) == 21
|
||||
|
||||
|
||||
def test_api_geojson_formdata_custom_view(pub, local_user):
|
||||
Role.wipe()
|
||||
role = Role(name='test')
|
||||
role.store()
|
||||
|
||||
FormDef.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'test'
|
||||
formdef.workflow_roles = {'_receiver': role.id}
|
||||
formdef.fields = [fields.StringField(id='0', label='foobar', varname='foobar'),]
|
||||
formdef.geolocations = {'base': 'Location'}
|
||||
formdef.store()
|
||||
|
||||
data_class = formdef.data_class()
|
||||
data_class.wipe()
|
||||
|
||||
for i in range(30):
|
||||
formdata = data_class()
|
||||
formdata.data = {'0': 'FOO BAR %d' % i}
|
||||
formdata.geolocations = {'base': {'lat': 48, 'lon': 2}}
|
||||
formdata.user_id = local_user.id
|
||||
formdata.just_created()
|
||||
if i % 3 == 0:
|
||||
formdata.jump_status('new')
|
||||
else:
|
||||
formdata.jump_status('finished')
|
||||
formdata.store()
|
||||
|
||||
# add proper role to user
|
||||
local_user.roles = [role.id]
|
||||
local_user.store()
|
||||
|
||||
# check it now gets the data
|
||||
resp = get_app(pub).get(sign_uri('/api/forms/test/geojson', user=local_user))
|
||||
assert len(resp.json['features']) == 10
|
||||
|
||||
custom_view = pub.custom_view_class()
|
||||
custom_view.title = 'custom view'
|
||||
custom_view.formdef = formdef
|
||||
custom_view.columns = {'list': [{'id': '0'}]}
|
||||
custom_view.filters = {"filter": "done", "filter-status": "on"}
|
||||
custom_view.visibility = 'any'
|
||||
custom_view.store()
|
||||
|
||||
resp = get_app(pub).get(sign_uri('/api/forms/test/geojson/custom-view', user=local_user))
|
||||
assert len(resp.json['features']) == 20
|
||||
|
||||
|
||||
def test_api_global_geojson(pub, local_user):
|
||||
Role.wipe()
|
||||
role = Role(name='test')
|
||||
|
|
|
@ -203,7 +203,7 @@ class ApiFormPage(BackofficeFormPage):
|
|||
return ApiFormdataPage(self.formdef, formdata)
|
||||
|
||||
def _q_traverse(self, path):
|
||||
for mode in ('list', 'ods'):
|
||||
for mode in ('list', 'ods', 'geojson'):
|
||||
if len(path) == 2 and path[0] == mode:
|
||||
if path[1] == '':
|
||||
path = [mode] # default view, with trailing slash
|
||||
|
|
Loading…
Reference in New Issue