dataviz: fix filters cell display of subfilters on empty filter values (#69112)

This commit is contained in:
Valentin Deniaud 2022-09-15 12:30:13 +02:00
parent f8fcd6b31a
commit d4be69bddb
2 changed files with 27 additions and 1 deletions

View File

@ -318,7 +318,7 @@ class ChartFiltersForm(ChartFiltersMixin, forms.ModelForm):
# keep only same value fields
for field, value in cell.filter_params.items():
if field in dynamic_fields and value != dynamic_fields_values.get(field):
if field in dynamic_fields and value != dynamic_fields_values.get(field, ''):
del dynamic_fields[field]
if cell.time_range != first_cell.time_range:

View File

@ -2575,6 +2575,32 @@ def test_chart_filters_cell_with_subfilters(new_api_statistics, app, admin_user,
assert 'filter-form' in resp.form.fields
assert 'filter-menu' in resp.form.fields
# add identitical cell
new_cell = ChartNgCell.objects.create(page=page, order=3, placeholder='content')
new_cell.statistic = Statistic.objects.get(slug='with-subfilter')
new_cell.save()
resp = app.get('/manage/pages/%s/' % page.id)
resp.forms[2]['cdataviz_chartngcell-%s-form' % new_cell.id] = 'food-request'
manager_submit_cell(resp.forms[2])
resp = app.get('/')
assert 'filter-form' in resp.form.fields
assert 'filter-menu' in resp.form.fields
# submitting cell again changes nothing even if it introduces a difference in cells filter params
resp = app.get('/manage/pages/%s/' % page.id)
manager_submit_cell(resp.forms[2])
cell.refresh_from_db()
assert cell.filter_params == {'form': 'food-request', 'other': ''}
new_cell.refresh_from_db()
assert new_cell.filter_params == {'form': 'food-request', 'other': '', 'menu': ''}
resp = app.get('/')
assert 'filter-form' in resp.form.fields
assert 'filter-menu' in resp.form.fields
@with_httmock(new_api_mock)
@pytest.mark.freeze_time('2021-10-06')