backoffice: add filtering on submission agent uuid (#45080)

This commit is contained in:
Frédéric Péters 2020-07-13 19:59:16 +02:00
parent fe9176bb91
commit 1bd794a71f
2 changed files with 30 additions and 0 deletions

View File

@ -1222,6 +1222,23 @@ def test_backoffice_submission_agent_filter(pub):
resp = app.get('/backoffice/management/form-title/?limit=100&filter-submission-agent=on&filter-submission-agent-value=%s' % user2.id)
assert resp.text.count('<tr') == 42
# filter on uuid
user1.name_identifiers = ['0123456789']
user1.store()
resp = app.get(base_url + '&filter-submission-agent-uuid=0123456789')
assert resp.text.count('>userA<') > 0
assert resp.text.count('>userB<') == 0
assert resp.pyquery.find('input[value=userA]') # displayed in sidebar
# check it persists on filter changes
resp = resp.forms['listing-settings'].submit()
assert resp.text.count('>userA<') > 0
assert resp.text.count('>userB<') == 0
# check with unknown uuid
resp = app.get(base_url + '&filter-submission-agent-uuid=XXX')
assert resp.text.count('>userA<') == 0
assert resp.text.count('>userB<') == 0
def test_backoffice_csv(pub):
create_superuser(pub)

View File

@ -1617,6 +1617,19 @@ class FormPage(Directory):
filters_dict['filter-user-value'] = '-1'
get_request().form['filter-user-value'] = '-1'
if filter_field.type == 'submission-agent-id':
# convert uuid based filter into local id filter
name_id = filters_dict.get('filter-submission-agent-uuid')
if name_id:
nameid_users = get_publisher().user_class.get_users_with_name_identifier(name_id)
get_request().form['filter-submission-agent'] = filters_dict['filter-submission-agent'] = 'on'
if nameid_users:
filters_dict['filter-submission-agent-value'] = str(nameid_users[0].id)
get_request().form['filter-submission-agent-value'] = filters_dict['filter-submission-agent-value']
else:
filters_dict['filter-submission-agent-value'] = '-1'
get_request().form['filter-submission-agent-value'] = '-1'
if filters_dict.get('filter-%s' % filter_field.id):
# if there's a filter-%(id)s, it is used to enable the actual
# filter, and the value will be found in filter-%s-value.