Skip to content

Commit

Permalink
fix: Returns 404 instead of 500 for unknown dashboard filter state ke…
Browse files Browse the repository at this point in the history
…ys (#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>
  • Loading branch information
michael-s-molina and villebro committed Jan 10, 2022
1 parent bd9e123 commit 3a9bd12
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 12 deletions.
15 changes: 5 additions & 10 deletions superset/dashboards/filter_state/commands/get.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,15 @@
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


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")
4 changes: 2 additions & 2 deletions tests/integration_tests/dashboards/filter_state/api_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down

0 comments on commit 3a9bd12

Please sign in to comment.