backoffice: restore status operator from custom view in listings (#65248)
This commit is contained in:
parent
0ff8b5a8e3
commit
613dec5d33
|
@ -375,6 +375,74 @@ def test_backoffice_custom_view_user_filter(pub):
|
|||
assert resp.text.count('"cell-user">admin<') == 0
|
||||
|
||||
|
||||
def test_backoffice_custom_view_status_filter(pub):
|
||||
create_superuser(pub)
|
||||
|
||||
FormDef.wipe()
|
||||
pub.custom_view_class.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'form title'
|
||||
formdef.fields = [
|
||||
fields.ItemField(
|
||||
id='1',
|
||||
label='field',
|
||||
type='item',
|
||||
items=['foo', 'bar', 'baz'],
|
||||
display_locations=['validation', 'summary', 'listings'],
|
||||
),
|
||||
]
|
||||
formdef.workflow_roles = {'_receiver': 1}
|
||||
formdef.store()
|
||||
|
||||
formdef.data_class().wipe()
|
||||
for i in range(3):
|
||||
formdata = formdef.data_class()()
|
||||
formdata.data = {}
|
||||
if i == 0:
|
||||
formdata.data['1'] = 'foo'
|
||||
formdata.data['1_display'] = 'foo'
|
||||
else:
|
||||
formdata.data['1'] = 'baz'
|
||||
formdata.data['1_display'] = 'baz'
|
||||
formdata.jump_status('new')
|
||||
formdata.store()
|
||||
|
||||
# change status of latest
|
||||
formdata.jump_status('rejected')
|
||||
formdata.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get('/backoffice/management/form-title/')
|
||||
assert resp.pyquery('tbody tr').length == 2
|
||||
|
||||
# filters
|
||||
resp.forms['listing-settings']['filter'].value = 'rejected'
|
||||
resp = resp.forms['listing-settings'].submit()
|
||||
|
||||
assert resp.pyquery('tbody tr').length == 1
|
||||
|
||||
resp.forms['save-custom-view']['title'] = 'custom test view'
|
||||
resp = resp.forms['save-custom-view'].submit()
|
||||
assert resp.location.endswith('/user-custom-test-view/')
|
||||
resp = resp.follow()
|
||||
assert resp.pyquery('tbody tr').length == 1
|
||||
|
||||
resp.forms['listing-settings']['filter-operator'] = 'ne'
|
||||
resp = resp.forms['listing-settings'].submit()
|
||||
assert resp.pyquery('tbody tr').length == 2
|
||||
assert resp.forms['save-custom-view']['update'].checked is True
|
||||
resp = resp.forms['save-custom-view'].submit()
|
||||
assert pub.custom_view_class.select()[0].filters == {
|
||||
'filter-operator': 'ne',
|
||||
'filter': 'rejected',
|
||||
'filter-status': 'on',
|
||||
}
|
||||
assert resp.location.endswith('/user-custom-test-view/')
|
||||
resp = resp.follow()
|
||||
assert resp.forms['listing-settings']['filter-operator'].value == 'ne'
|
||||
assert resp.pyquery('tbody tr').length == 2
|
||||
|
||||
|
||||
def test_backoffice_custom_view_delete(pub):
|
||||
create_superuser(pub)
|
||||
|
||||
|
|
|
@ -1765,7 +1765,10 @@ class FormPage(Directory):
|
|||
return 'all'
|
||||
|
||||
def get_filter_operator_from_query(self):
|
||||
operator = get_request().form.get('filter-operator') or 'eq'
|
||||
default_filter_operator = 'eq'
|
||||
if self.view:
|
||||
default_filter_operator = self.view.filters.get('filter-operator', 'eq')
|
||||
operator = get_request().form.get('filter-operator') or default_filter_operator
|
||||
if operator not in ['eq', 'ne']:
|
||||
raise RequestError('Invalid operator "%s" for "filter-operator"' % operator)
|
||||
return operator
|
||||
|
|
Loading…
Reference in New Issue