From 07a632891c1c8feb5f0ac3104a5c852d1b86ae87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20DUBOIS?= Date: Thu, 23 Mar 2023 15:36:50 +0100 Subject: [PATCH] fix(chart): non existent time grain no longer breaks the application (#23441) Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com> --- superset/db_engine_specs/base.py | 2 +- .../db_engine_specs/base_engine_spec_tests.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/superset/db_engine_specs/base.py b/superset/db_engine_specs/base.py index f1a46ceb34f44..fb76d9363d535 100644 --- a/superset/db_engine_specs/base.py +++ b/superset/db_engine_specs/base.py @@ -704,7 +704,7 @@ def get_time_grain_expressions(cls) -> Dict[Optional[str], str]: time_grain_expressions.update(grain_addon_expressions.get(cls.engine, {})) denylist: List[str] = current_app.config["TIME_GRAIN_DENYLIST"] for key in denylist: - time_grain_expressions.pop(key) + time_grain_expressions.pop(key, None) return dict( sorted( diff --git a/tests/integration_tests/db_engine_specs/base_engine_spec_tests.py b/tests/integration_tests/db_engine_specs/base_engine_spec_tests.py index 87de98db1c1d2..6048ac8f19968 100644 --- a/tests/integration_tests/db_engine_specs/base_engine_spec_tests.py +++ b/tests/integration_tests/db_engine_specs/base_engine_spec_tests.py @@ -332,11 +332,12 @@ def is_readonly(sql: str) -> bool: def test_time_grain_denylist(): config = app.config.copy() - app.config["TIME_GRAIN_DENYLIST"] = ["PT1M"] + app.config["TIME_GRAIN_DENYLIST"] = ["PT1M", "SQLITE_NONEXISTENT_GRAIN"] with app.app_context(): time_grain_functions = SqliteEngineSpec.get_time_grain_expressions() assert not "PT1M" in time_grain_functions + assert not "SQLITE_NONEXISTENT_GRAIN" in time_grain_functions app.config = config