backoffice: fix formdata filtering by block field with autocomplete (#60451)
gitea-wip/wcs/pipeline/head Build started... Details

This commit is contained in:
Lauréline Guérin 2022-01-10 14:56:58 +01:00
parent 83d2f15c8d
commit c298210b5b
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 9 additions and 1 deletions

View File

@ -827,6 +827,10 @@ def test_backoffice_block_field_filter(pub, local_user):
resp.forms['listing-settings']['filter-0-2-value'].value = '2'
resp = resp.forms['listing-settings'].submit()
assert resp.text.count('<tr') == 1 + 5
resp2 = app.get(resp.request.path + 'filter-options?filter_field_id=0-2&_search=foo')
assert [x['id'] for x in resp2.json['data']] == ['1']
resp2 = app.get(resp.request.path + 'filter-options?filter_field_id=0-2&_search=bar')
assert [x['id'] for x in resp2.json['data']] == ['2']
# bool
resp = app.get('/backoffice/management/form-title/')

View File

@ -981,7 +981,11 @@ class FormPage(Directory):
get_request().is_json_marker = True
field_id = get_request().form.get('filter_field_id')
for filter_field in self.get_formdef_fields():
if filter_field.id == field_id:
is_in_block_field = getattr(filter_field, 'block_field', None)
filter_field.contextual_id = filter_field.id
if is_in_block_field:
filter_field.contextual_id = '%s-%s' % (filter_field.block_field.id, filter_field.id)
if filter_field.contextual_id == field_id:
break
else:
raise errors.TraversalError()