make filter_values() macro to properly accept value from filter box with single value setting (#7494)

This commit is contained in:
Jim Horng 2019-06-04 00:54:07 +08:00 committed by Maxime Beauchemin
parent 45b9880516
commit 78c1674dc7
2 changed files with 19 additions and 2 deletions

View File

@ -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

View File

@ -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'])