From d4be69bddb0553df9bd31bd979ffc5ce0aa82ebc Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Thu, 15 Sep 2022 12:30:13 +0200 Subject: [PATCH] dataviz: fix filters cell display of subfilters on empty filter values (#69112) --- combo/apps/dataviz/forms.py | 2 +- tests/test_dataviz.py | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/combo/apps/dataviz/forms.py b/combo/apps/dataviz/forms.py index 890fdf63..f16a2cdc 100644 --- a/combo/apps/dataviz/forms.py +++ b/combo/apps/dataviz/forms.py @@ -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: diff --git a/tests/test_dataviz.py b/tests/test_dataviz.py index 1dd24ca2..5fcf2cbe 100644 --- a/tests/test_dataviz.py +++ b/tests/test_dataviz.py @@ -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') -- 2.30.2