backoffice: convert ?filter-<varname> parameters so they're kept (#44152)

This commit is contained in:
Frédéric Péters 2020-06-17 08:55:27 +02:00
parent 020ec09e9c
commit 5811c4b918
2 changed files with 22 additions and 0 deletions

View File

@ -6815,3 +6815,19 @@ 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-2-value' in resp.forms['listing-settings'].fields
assert 'filter-3-value' in resp.forms['listing-settings'].fields
def test_backoffice_table_varname_filter(pub):
create_superuser(pub)
create_environment(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/management/form-title/?filter-foo=A')
# check filter is applied
assert resp.text.count('<tr') == 6
# and kept in parameters
assert resp.forms['listing-settings']['filter-3'].checked
assert resp.forms['listing-settings']['filter-3-value'].value == 'A'
resp = resp.forms['listing-settings'].submit()
assert resp.text.count('<tr') == 6

View File

@ -1197,6 +1197,12 @@ class FormPage(Directory):
if get_request().form:
field.enabled = ('filter-%s' % field.id in get_request().form) or (
'filter-%s' % field.varname in get_request().form)
if 'filter-%s' % field.varname in get_request().form:
# if ?filter-<varname>= is used, take the value and put it
# into filter-<field id>-value so it is used to fill the
# fields.
get_request().form['filter-%s-value' % field.id] = get_request().form.get(
'filter-%s' % field.varname)
if not field.enabled and self.view and get_request().form.get('keep-view-filters'):
# keep-view-filters=on is used to initialize page with
# filters from both the custom view and the query string.