mirror of https://github.com/apache/superset.git
fix(native-filters): ignore unset filter box time range (#16854)
This commit is contained in:
parent
f703c12ae8
commit
0f16177bde
|
@ -1175,7 +1175,7 @@ def merge_extra_filters(form_data: Dict[str, Any]) -> None:
|
|||
time_extra = date_options.get(filter_column)
|
||||
if time_extra:
|
||||
time_extra_value = filtr.get("val")
|
||||
if time_extra_value:
|
||||
if time_extra_value and time_extra_value != NO_TIME_RANGE:
|
||||
form_data[time_extra] = time_extra_value
|
||||
applied_time_extras[filter_column] = time_extra_value
|
||||
elif filtr["val"]:
|
||||
|
@ -1640,7 +1640,7 @@ def get_time_filter_status(
|
|||
)
|
||||
|
||||
time_range = applied_time_extras.get(ExtraFiltersTimeColumnType.TIME_RANGE)
|
||||
if time_range and time_range != NO_TIME_RANGE:
|
||||
if time_range:
|
||||
# are there any temporal columns to assign the time grain to?
|
||||
if temporal_columns:
|
||||
applied.append({"column": ExtraFiltersTimeColumnType.TIME_RANGE})
|
||||
|
|
|
@ -47,6 +47,7 @@ from superset.utils.core import (
|
|||
convert_legacy_filters_into_adhoc,
|
||||
create_ssl_cert_file,
|
||||
DTTM_ALIAS,
|
||||
extract_dataframe_dtypes,
|
||||
format_timedelta,
|
||||
GenericDataType,
|
||||
get_form_data_token,
|
||||
|
@ -60,10 +61,10 @@ from superset.utils.core import (
|
|||
merge_extra_filters,
|
||||
merge_extra_form_data,
|
||||
merge_request_params,
|
||||
NO_TIME_RANGE,
|
||||
normalize_dttm_col,
|
||||
parse_ssl_cert,
|
||||
parse_js_uri_path_item,
|
||||
extract_dataframe_dtypes,
|
||||
split,
|
||||
TimeRangeEndpoint,
|
||||
validate_json,
|
||||
|
@ -850,6 +851,47 @@ class TestUtils(SupersetTestCase):
|
|||
form_data, {"time_range": "Last 10 days", "adhoc_filters": [],},
|
||||
)
|
||||
|
||||
def test_merge_extra_filters_with_unset_legacy_time_range(self):
|
||||
"""
|
||||
Make sure native filter is applied if filter box time range is unset.
|
||||
"""
|
||||
form_data = {
|
||||
"time_range": "Last 10 days",
|
||||
"extra_filters": [
|
||||
{"col": "__time_range", "op": "==", "val": NO_TIME_RANGE},
|
||||
],
|
||||
"extra_form_data": {"time_range": "Last year"},
|
||||
}
|
||||
merge_extra_filters(form_data)
|
||||
self.assertEqual(
|
||||
form_data,
|
||||
{
|
||||
"time_range": "Last year",
|
||||
"applied_time_extras": {},
|
||||
"adhoc_filters": [],
|
||||
},
|
||||
)
|
||||
|
||||
def test_merge_extra_filters_with_conflicting_time_ranges(self):
|
||||
"""
|
||||
Make sure filter box takes precedence if both native filter and filter box
|
||||
time ranges are set.
|
||||
"""
|
||||
form_data = {
|
||||
"time_range": "Last 10 days",
|
||||
"extra_filters": [{"col": "__time_range", "op": "==", "val": "Last week"}],
|
||||
"extra_form_data": {"time_range": "Last year",},
|
||||
}
|
||||
merge_extra_filters(form_data)
|
||||
self.assertEqual(
|
||||
form_data,
|
||||
{
|
||||
"time_range": "Last week",
|
||||
"applied_time_extras": {"__time_range": "Last week"},
|
||||
"adhoc_filters": [],
|
||||
},
|
||||
)
|
||||
|
||||
def test_merge_extra_filters_with_extras(self):
|
||||
form_data = {
|
||||
"time_range": "Last 10 days",
|
||||
|
|
|
@ -116,10 +116,6 @@ def test_get_time_filter_status_time_col():
|
|||
def test_get_time_filter_status_time_range():
|
||||
dataset = get_dataset_mock()
|
||||
|
||||
assert get_time_filter_status(
|
||||
dataset, {ExtraFiltersTimeColumnType.TIME_RANGE: NO_TIME_RANGE}
|
||||
) == ([], [])
|
||||
|
||||
assert get_time_filter_status(
|
||||
dataset, {ExtraFiltersTimeColumnType.TIME_RANGE: "1 year ago"}
|
||||
) == ([{"column": ExtraFiltersTimeColumnType.TIME_RANGE}], [])
|
||||
|
|
Loading…
Reference in New Issue