From b4909f2d030efc57612a63f31f66f0f0f7a61cf9 Mon Sep 17 00:00:00 2001 From: Nicolas Bonnotte Date: Thu, 21 Dec 2017 01:22:43 +0100 Subject: [PATCH] [Bugfix] Issues with merge_extra_filters (#4042) (#4091) --- superset/utils.py | 3 ++- tests/utils_tests.py | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/superset/utils.py b/superset/utils.py index afe2f419a..c64e8cf4e 100644 --- a/superset/utils.py +++ b/superset/utils.py @@ -735,7 +735,8 @@ def merge_extra_filters(form_data): return f['col'] + '__' + f['op'] existing_filters = {} for existing in form_data['filters']: - existing_filters[get_filter_key(existing)] = existing['val'] + if existing['col'] is not None: + existing_filters[get_filter_key(existing)] = existing['val'] for filtr in form_data['extra_filters']: # Pull out time filters/options and merge into form data if date_options.get(filtr['col']): diff --git a/tests/utils_tests.py b/tests/utils_tests.py index 46d476632..04a70b8f6 100644 --- a/tests/utils_tests.py +++ b/tests/utils_tests.py @@ -119,6 +119,23 @@ class UtilsTestCase(unittest.TestCase): merge_extra_filters(form_data) self.assertEquals(form_data, expected) + def test_merge_extra_filters_ignores_nones(self): + form_data = { + 'filters': [ + {'col': None, 'op': 'in', 'val': ''}, + ], + 'extra_filters': [ + {'col': 'B', 'op': '==', 'val': []}, + ], + } + expected = { + 'filters': [ + {'col': None, 'op': 'in', 'val': ''}, + ], + } + merge_extra_filters(form_data) + self.assertEquals(form_data, expected) + def test_merge_extra_filters_ignores_equal_filters(self): form_data = { 'extra_filters': [