diff --git a/superset/jinja_context.py b/superset/jinja_context.py index 5e83f84189..ce8795acf2 100644 --- a/superset/jinja_context.py +++ b/superset/jinja_context.py @@ -43,7 +43,8 @@ def url_param(param, default=None): # Supporting POST as well as get if request.form.get('form_data'): form_data = json.loads(request.form.get('form_data')) - return form_data.get(param, default) + url_params = form_data['url_params'] or {} + return url_params.get(param, default) return default diff --git a/superset/utils.py b/superset/utils.py index 639045970d..ab3cef8a22 100644 --- a/superset/utils.py +++ b/superset/utils.py @@ -836,10 +836,12 @@ def merge_extra_filters(form_data): def merge_request_params(form_data, params): + url_params = {} for key, value in params.items(): - if key == 'form_data': + if key in ('form_data', 'r'): continue - form_data[key] = value + url_params[key] = value + form_data['url_params'] = url_params def get_update_perms_flag(): diff --git a/tests/utils_tests.py b/tests/utils_tests.py index 000079491a..674c6f4a67 100644 --- a/tests/utils_tests.py +++ b/tests/utils_tests.py @@ -227,7 +227,8 @@ class UtilsTestCase(unittest.TestCase): 'dashboard_ids': '(1,2,3,4,5)', } merge_request_params(form_data, url_params) - self.assertIn('dashboard_ids', form_data.keys()) + self.assertIn('url_params', form_data.keys()) + self.assertIn('dashboard_ids', form_data['url_params']) self.assertNotIn('form_data', form_data.keys()) def test_datetime_f(self):