backoffice: support existing criteria when filtering statistics (#87909)
This commit is contained in:
parent
06d6487bb3
commit
658aff404e
|
@ -148,6 +148,12 @@ def test_backoffice_statistics_status_select(pub):
|
|||
assert 'Total number of records: 26' in resp.text
|
||||
assert resp.pyquery('ul.resolution-times.status-wf-new li')[0].text == 'Count: 9'
|
||||
|
||||
resp.forms['listing-settings']['filter-%s-value' % field1.id].value = 'baz'
|
||||
resp.forms['listing-settings']['filter-%s-operator' % field1.id].value = 'existing'
|
||||
resp = resp.forms['listing-settings'].submit()
|
||||
assert 'Total number of records: 50' in resp.text
|
||||
assert resp.pyquery('ul.resolution-times.status-wf-new li')[0].text == 'Count: 17'
|
||||
|
||||
resp.forms['listing-settings']['filter-%s-value' % field1.id].value = 'foo'
|
||||
resp.forms['listing-settings']['filter-%s-operator' % field1.id].value = 'eq'
|
||||
resp = resp.forms['listing-settings'].submit()
|
||||
|
|
17
wcs/sql.py
17
wcs/sql.py
|
@ -2355,13 +2355,20 @@ class SqlDataMixin(SqlMixin):
|
|||
if period_end:
|
||||
criterias.append(Less('f.receipt_time', period_end))
|
||||
if extra_criterias:
|
||||
for criteria in extra_criterias:
|
||||
|
||||
def alter_criteria(criteria):
|
||||
# change attributes to point to the formdata table (f)
|
||||
if hasattr(criteria, 'attribute'):
|
||||
criteria.attribute = f'f.{criteria.attribute}'
|
||||
elif hasattr(criteria, 'criteria'): # Not()
|
||||
alter_criteria(criteria.criteria)
|
||||
elif hasattr(criteria, 'criterias'): # Or()
|
||||
for c in criteria.criterias:
|
||||
alter_criteria(c)
|
||||
|
||||
for criteria in extra_criterias:
|
||||
altered_criteria = copy.deepcopy(criteria)
|
||||
if isinstance(criteria, Not):
|
||||
altered_criteria.criteria.attribute = f'f.{criteria.criteria.attribute}'
|
||||
else:
|
||||
altered_criteria.attribute = f'f.{criteria.attribute}'
|
||||
alter_criteria(altered_criteria)
|
||||
criterias.append(altered_criteria)
|
||||
|
||||
where_clauses, params, dummy = parse_clause(criterias)
|
||||
|
|
Loading…
Reference in New Issue