From 313564d80795f7e23858dd9b9a829c5afa679ccd Mon Sep 17 00:00:00 2001 From: Elizabeth Thompson Date: Tue, 1 Aug 2023 11:52:41 -0700 Subject: [PATCH 1/3] allow talisman config to pick up os environment --- superset/config.py | 4 ++- superset/utils/core.py | 2 ++ tests/unit_tests/utils/test_core.py | 39 +++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/superset/config.py b/superset/config.py index 9c65d568e441b..75fda6eb37a1c 100644 --- a/superset/config.py +++ b/superset/config.py @@ -54,6 +54,7 @@ from superset.stats_logger import DummyStatsLogger from superset.superset_typing import CacheConfig from superset.tasks.types import ExecutorType +from superset.utils import core as utils from superset.utils.core import is_test, NO_TIME_RANGE, parse_boolean_string from superset.utils.encrypt import SQLAlchemyUtilsAdapter from superset.utils.log import DBEventLogger @@ -1383,7 +1384,8 @@ def EMAIL_HEADER_MUTATOR( # pylint: disable=invalid-name,unused-argument CONTENT_SECURITY_POLICY_WARNING = True # Do you want Talisman enabled? -TALISMAN_ENABLED = True +TALISMAN_ENABLED = utils.cast_to_boolean(os.environ.get("TALISMAN_ENABLED", True)) + # If you want Talisman, how do you want it configured?? TALISMAN_CONFIG = { "content_security_policy": { diff --git a/superset/utils/core.py b/superset/utils/core.py index f05d7b780d825..5feaacd9f50e9 100644 --- a/superset/utils/core.py +++ b/superset/utils/core.py @@ -438,6 +438,8 @@ def cast_to_boolean(value: Any) -> bool | None: """ if value is None: return None + if isinstance(value, bool): + return value if isinstance(value, (int, float)): return value != 0 if isinstance(value, str): diff --git a/tests/unit_tests/utils/test_core.py b/tests/unit_tests/utils/test_core.py index 996bd1948f385..568595517c6bd 100644 --- a/tests/unit_tests/utils/test_core.py +++ b/tests/unit_tests/utils/test_core.py @@ -20,6 +20,7 @@ import pytest from superset.utils.core import ( + cast_to_boolean, is_test, parse_boolean_string, QueryObjectFilterClause, @@ -132,3 +133,41 @@ def test_is_test(): ) def test_parse_boolean_string(test_input: Optional[str], expected: bool): assert parse_boolean_string(test_input) == expected + + +def test_int_values(): + assert cast_to_boolean(1) is True + assert cast_to_boolean(0) is False + assert cast_to_boolean(-1) is True + assert cast_to_boolean(42) is True + assert cast_to_boolean(0) is False + + +def test_float_values(): + assert cast_to_boolean(0.5) is True + assert cast_to_boolean(3.14) is True + assert cast_to_boolean(-2.71) is True + assert cast_to_boolean(0.0) is False + + +def test_string_values(): + assert cast_to_boolean("true") is True + assert cast_to_boolean("TruE") is True + assert cast_to_boolean("false") is False + assert cast_to_boolean("FaLsE") is False + assert cast_to_boolean("") is False + + +def test_none_value(): + assert cast_to_boolean(None) is None + + +def test_boolean_values(): + assert cast_to_boolean(True) is True + assert cast_to_boolean(False) is False + + +def test_other_values(): + assert cast_to_boolean([]) is False + assert cast_to_boolean({}) is False + assert cast_to_boolean(object()) is False From 09f5686e4c99e543a6d4053db973dff09244a075 Mon Sep 17 00:00:00 2001 From: Elizabeth Thompson Date: Tue, 1 Aug 2023 16:04:50 -0700 Subject: [PATCH 2/3] test --- superset/views/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/superset/views/base.py b/superset/views/base.py index 34232a6e34315..a353c8d6d22b4 100644 --- a/superset/views/base.py +++ b/superset/views/base.py @@ -450,6 +450,7 @@ def cached_common_bootstrap_data(user: User, locale: str) -> dict[str, Any]: "extra_categorical_color_schemes": conf["EXTRA_CATEGORICAL_COLOR_SCHEMES"], "theme_overrides": conf["THEME_OVERRIDES"], "menu_data": menu_data(user), + "Talisman": conf.get("TALISMAN_ENABLED", "not set"), } bootstrap_data.update(conf["COMMON_BOOTSTRAP_OVERRIDES_FUNC"](bootstrap_data)) return bootstrap_data From b8ce89206a18e05a2f79365d516c15d28522d401 Mon Sep 17 00:00:00 2001 From: Elizabeth Thompson Date: Fri, 4 Aug 2023 00:14:01 -0700 Subject: [PATCH 3/3] Remove test --- superset/views/base.py | 1 - 1 file changed, 1 deletion(-) diff --git a/superset/views/base.py b/superset/views/base.py index a353c8d6d22b4..34232a6e34315 100644 --- a/superset/views/base.py +++ b/superset/views/base.py @@ -450,7 +450,6 @@ def cached_common_bootstrap_data(user: User, locale: str) -> dict[str, Any]: "extra_categorical_color_schemes": conf["EXTRA_CATEGORICAL_COLOR_SCHEMES"], "theme_overrides": conf["THEME_OVERRIDES"], "menu_data": menu_data(user), - "Talisman": conf.get("TALISMAN_ENABLED", "not set"), } bootstrap_data.update(conf["COMMON_BOOTSTRAP_OVERRIDES_FUNC"](bootstrap_data)) return bootstrap_data