backoffice: add query parameter to keep custom view filters (#42315)
This commit is contained in:
parent
06da67b5ac
commit
a9d8db534a
|
@ -6739,3 +6739,35 @@ def test_carddata_custom_view(pub, studio):
|
|||
resp = resp.forms['save-custom-view'].submit()
|
||||
assert resp.location.endswith('/user-card-view/')
|
||||
resp = resp.follow()
|
||||
|
||||
|
||||
def test_backoffice_custom_view_keep_filters(pub):
|
||||
create_superuser(pub)
|
||||
create_environment(pub)
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get('/backoffice/management/form-title/')
|
||||
assert resp.text.count('<span>User Label</span>') == 1
|
||||
assert resp.text.count('<tr') == 18
|
||||
|
||||
# filters
|
||||
resp.forms[0]['filter-2'].checked = True
|
||||
resp = resp.forms['listing-settings'].submit()
|
||||
|
||||
resp.forms['listing-settings']['filter-2-value'] = 'baz'
|
||||
resp = resp.forms['listing-settings'].submit()
|
||||
|
||||
resp.forms['save-custom-view']['title'] = 'custom test view'
|
||||
resp = resp.forms['save-custom-view'].submit()
|
||||
|
||||
resp = app.get('/backoffice/management/form-title/user-custom-test-view/')
|
||||
assert 'filter-2-value' in resp.forms['listing-settings'].fields
|
||||
assert 'filter-3-value' not in resp.forms['listing-settings'].fields
|
||||
|
||||
resp = app.get('/backoffice/management/form-title/user-custom-test-view/?filter-foo=A')
|
||||
assert 'filter-2-value' not in resp.forms['listing-settings'].fields
|
||||
assert 'filter-3-value' in resp.forms['listing-settings'].fields
|
||||
|
||||
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
|
||||
|
|
|
@ -1196,6 +1196,10 @@ 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 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.
|
||||
field.enabled = (field.id in default_filters)
|
||||
else:
|
||||
field.enabled = (field.id in default_filters)
|
||||
if not self.view and field.type in ('item', 'items'):
|
||||
|
|
Loading…
Reference in New Issue