You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by el...@apache.org on 2023/08/04 16:04:24 UTC

[superset] branch master updated: chore: add talisman env var to config (#24774)

This is an automated email from the ASF dual-hosted git repository.

elizabeth pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new d23b20ea75 chore: add talisman env var to config (#24774)
d23b20ea75 is described below

commit d23b20ea75457f35efbd25ca6b36f594e47eef91
Author: Elizabeth Thompson <es...@gmail.com>
AuthorDate: Fri Aug 4 09:04:14 2023 -0700

    chore: add talisman env var to config (#24774)
---
 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 9c65d568e4..75fda6eb37 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -54,6 +54,7 @@ from superset.key_value.types import JsonKeyValueCodec
 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 @@ TEST_DATABASE_CONNECTION_TIMEOUT = timedelta(seconds=30)
 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 80af7cde3c..cd8c62efe7 100644
--- a/superset/utils/core.py
+++ b/superset/utils/core.py
@@ -439,6 +439,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 996bd1948f..568595517c 100644
--- a/tests/unit_tests/utils/test_core.py
+++ b/tests/unit_tests/utils/test_core.py
@@ -20,6 +20,7 @@ from typing import Any, Optional
 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