diff --git a/superset/constants.py b/superset/constants.py index 0c9016fb5..f69b7e92c 100644 --- a/superset/constants.py +++ b/superset/constants.py @@ -133,14 +133,14 @@ EXTRA_FORM_DATA_OVERRIDE_REGULAR_MAPPINGS = { "time_column": "time_column", "time_grain": "time_grain", "time_range": "time_range", + "druid_time_origin": "druid_time_origin", + "time_grain_sqla": "time_grain_sqla", + "time_range_endpoints": "time_range_endpoints", } EXTRA_FORM_DATA_OVERRIDE_EXTRA_KEYS = { - "druid_time_origin", "relative_start", "relative_end", - "time_grain_sqla", - "time_range_endpoints", } EXTRA_FORM_DATA_OVERRIDE_KEYS = ( diff --git a/superset/utils/core.py b/superset/utils/core.py index 0c60d05f2..a9d1bb604 100644 --- a/superset/utils/core.py +++ b/superset/utils/core.py @@ -1088,10 +1088,10 @@ def merge_extra_form_data(form_data: Dict[str, Any]) -> None: extras = form_data.get("extras", {}) for key in EXTRA_FORM_DATA_OVERRIDE_EXTRA_KEYS: value = extra_form_data.get(key) - extra = extras.get(key) - if value and extra: + if value is not None: extras[key] = value - form_data.update(extras) + if extras: + form_data["extras"] = extras adhoc_filters = form_data.get("adhoc_filters", []) form_data["adhoc_filters"] = adhoc_filters diff --git a/tests/utils_tests.py b/tests/utils_tests.py index 1041091fd..cf79f16aa 100644 --- a/tests/utils_tests.py +++ b/tests/utils_tests.py @@ -927,6 +927,8 @@ class TestUtils(SupersetTestCase): } ], "time_range": "Last 100 years", + "time_grain_sqla": "PT1M", + "relative_start": "now", }, } merge_extra_form_data(form_data) @@ -948,6 +950,8 @@ class TestUtils(SupersetTestCase): "subject": "foo", } assert form_data["time_range"] == "Last 100 years" + assert form_data["time_grain_sqla"] == "PT1M" + assert form_data["extras"]["relative_start"] == "now" def test_ssl_certificate_parse(self): parsed_certificate = parse_ssl_cert(ssl_certificate)