From 78c1674dc7042489fe8fbe83564b918d5d219e3e Mon Sep 17 00:00:00 2001 From: Jim Horng Date: Tue, 4 Jun 2019 00:54:07 +0800 Subject: [PATCH] make filter_values() macro to properly accept value from filter box with single value setting (#7494) --- superset/jinja_context.py | 7 +++++-- tests/macro_tests.py | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/superset/jinja_context.py b/superset/jinja_context.py index 56724411b..47ee5488f 100644 --- a/superset/jinja_context.py +++ b/superset/jinja_context.py @@ -113,8 +113,11 @@ def filter_values(column, default=None): for f in form_data[filter_type]: if f['col'] == column: - for v in f['val']: - return_val.append(v) + if isinstance(f['val'], list): + for v in f['val']: + return_val.append(v) + else: + return_val.append(f['val']) if return_val: return return_val diff --git a/tests/macro_tests.py b/tests/macro_tests.py index 75905ca7d..05cc11ef2 100644 --- a/tests/macro_tests.py +++ b/tests/macro_tests.py @@ -48,9 +48,19 @@ class MacroTestCase(SupersetTestCase): ], } + form_data4 = { + 'extra_filters': [ + {'col': 'my_special_filter', 'op': 'in', 'val': 'foo'}, + ], + 'filters': [ + {'col': 'my_special_filter', 'op': 'in', 'val': 'savage'}, + ], + } + data1 = {'form_data': json.dumps(form_data1)} data2 = {'form_data': json.dumps(form_data2)} data3 = {'form_data': json.dumps(form_data3)} + data4 = {'form_data': json.dumps(form_data4)} with app.test_request_context(data=data1): filter_values = jinja_context.filter_values('my_special_filter') @@ -73,3 +83,7 @@ class MacroTestCase(SupersetTestCase): with app.test_request_context(): filter_values = jinja_context.filter_values('nonexistent_filter', 'foo') self.assertEqual(filter_values, ['foo']) + + with app.test_request_context(data=data4): + filter_values = jinja_context.filter_values('my_special_filter') + self.assertEqual(filter_values, ['savage', 'foo'])