diff --git a/superset/jinja_context.py b/superset/jinja_context.py index 56724411b1..47ee5488f1 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 75905ca7dd..05cc11ef2e 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'])