diff --git a/superset/dashboards/filter_state/commands/get.py b/superset/dashboards/filter_state/commands/get.py index 3087389cc5a2e..bb3e95aaa615c 100644 --- a/superset/dashboards/filter_state/commands/get.py +++ b/superset/dashboards/filter_state/commands/get.py @@ -17,7 +17,6 @@ from typing import Optional from superset.dashboards.dao import DashboardDAO -from superset.dashboards.filter_state.commands.entry import Entry from superset.extensions import cache_manager from superset.key_value.commands.get import GetKeyValueCommand from superset.key_value.utils import cache_key @@ -25,12 +24,8 @@ class GetFilterStateCommand(GetKeyValueCommand): def get(self, resource_id: int, key: str, refresh_timeout: bool) -> Optional[str]: - dashboard = DashboardDAO.get_by_id_or_slug(str(resource_id)) - if dashboard: - entry: Entry = cache_manager.filter_state_cache.get( - cache_key(resource_id, key) - ) - if refresh_timeout: - cache_manager.filter_state_cache.set(key, entry) - return entry["value"] - return None + DashboardDAO.get_by_id_or_slug(str(resource_id)) + entry = cache_manager.filter_state_cache.get(cache_key(resource_id, key)) or {} + if entry and refresh_timeout: + cache_manager.filter_state_cache.set(key, entry) + return entry.get("value") diff --git a/tests/integration_tests/dashboards/filter_state/api_tests.py b/tests/integration_tests/dashboards/filter_state/api_tests.py index dce06205923ae..ae667ec73423b 100644 --- a/tests/integration_tests/dashboards/filter_state/api_tests.py +++ b/tests/integration_tests/dashboards/filter_state/api_tests.py @@ -145,9 +145,9 @@ def test_put_not_owner(client, dashboard_id: int): assert resp.status_code == 403 -def test_get_key_not_found(client): +def test_get_key_not_found(client, dashboard_id: int): login(client, "admin") - resp = client.get("unknown-key") + resp = client.get(f"api/v1/dashboard/{dashboard_id}/filter_state/unknown-key/") assert resp.status_code == 404