fix: Returns 404 instead of 500 for unknown dashboard filter state keys (#17878)

* fix: Returns 404 instead of 500 for unknown dashboard filter state keys

* Reduces hierarchies of if-expression

* Removes unnecessary check

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>

* Removes unused variable

* Fixes type error

* Removes unused import

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
This commit is contained in:
Michael S. Molina 2022-01-10 14:24:22 -03:00 committed by GitHub
parent bd9e1235a9
commit 3a9bd12e3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 12 deletions

View File

@ -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 @@ from superset.key_value.utils import cache_key
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")

View File

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