backoffice: correctly restore bool filters in sidebar (#48574)
This commit is contained in:
parent
c97d646594
commit
1561bf579b
|
@ -555,3 +555,44 @@ def test_backoffice_custom_view_keep_filters(pub):
|
|||
resp = app.get('/backoffice/management/form-title/user-custom-test-view/?filter-foo=A&keep-view-filters=on')
|
||||
assert 'filter-1-value' in resp.forms['listing-settings'].fields
|
||||
assert 'filter-2-value' in resp.forms['listing-settings'].fields
|
||||
|
||||
|
||||
def test_backoffice_custom_view_boolean_filters(pub):
|
||||
user = create_superuser(pub)
|
||||
|
||||
FormDef.wipe()
|
||||
pub.custom_view_class.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'form title'
|
||||
formdef.fields = [
|
||||
fields.BoolField(
|
||||
id='1', label='1st field', type='bool',
|
||||
display_locations=['validation', 'summary', 'listings']),
|
||||
]
|
||||
formdef.store()
|
||||
formdef.data_class().wipe()
|
||||
for value in [True] * 5 + [False] * 2:
|
||||
formdata = formdef.data_class()()
|
||||
formdata.data = {'1': value}
|
||||
formdata.jump_status('new')
|
||||
formdata.store()
|
||||
|
||||
custom_view = pub.custom_view_class()
|
||||
custom_view.title = 'custom test view'
|
||||
custom_view.formdef = formdef
|
||||
custom_view.visibility = 'owner'
|
||||
custom_view.columns = {'list': [{'id': '1'}]}
|
||||
custom_view.filters = {'filter-1': True, 'filter-1-value': 'true', 'filter': 'all'}
|
||||
custom_view.user = user
|
||||
custom_view.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get('/backoffice/management/form-title/user-custom-test-view/')
|
||||
assert resp.forms['listing-settings']['filter-1-value'].value == 'true'
|
||||
assert resp.text.count('data-link=') == 5
|
||||
|
||||
custom_view.filters = {'filter-1': True, 'filter-1-value': 'false', 'filter': 'all'}
|
||||
custom_view.store()
|
||||
resp = app.get('/backoffice/management/form-title/user-custom-test-view/')
|
||||
assert resp.forms['listing-settings']['filter-1-value'].value == 'false'
|
||||
assert resp.text.count('data-link=') == 2
|
||||
|
|
|
@ -1390,6 +1390,10 @@ class FormPage(Directory):
|
|||
|
||||
elif filter_field.type == 'bool':
|
||||
options = [(None, '', ''), (True, _('Yes'), 'true'), (False, _('No'), 'false')]
|
||||
if filter_field_value == 'true':
|
||||
filter_field_value = True
|
||||
elif filter_field_value == 'false':
|
||||
filter_field_value = False
|
||||
r += SingleSelectWidget(filter_field_key, title=filter_field.label,
|
||||
options=options, value=filter_field_value,
|
||||
render_br=False).render()
|
||||
|
|
Loading…
Reference in New Issue