From ebc24ec3160456daeac8c61ca890a37a5d89fbbd Mon Sep 17 00:00:00 2001 From: Jack Fragassi Date: Sun, 19 Nov 2023 16:07:51 -0800 Subject: [PATCH 1/3] Pass user id to --- superset/views/base.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/superset/views/base.py b/superset/views/base.py index 8f8b4c1648689..e8b74cd6b0a5c 100644 --- a/superset/views/base.py +++ b/superset/views/base.py @@ -380,7 +380,9 @@ def menu_data(user: User) -> dict[str, Any]: @cache_manager.cache.memoize(timeout=60) -def cached_common_bootstrap_data(user: User, locale: str) -> dict[str, Any]: +def cached_common_bootstrap_data( + user: User, user_id: int | None, locale: str +) -> dict[str, Any]: """Common data always sent to the client The function is memoized as the return value only changes when user permissions @@ -424,8 +426,9 @@ def cached_common_bootstrap_data(user: User, locale: str) -> dict[str, Any]: def common_bootstrap_payload(user: User) -> dict[str, Any]: + user_id = user.id if hasattr(user, "id") else None return { - **cached_common_bootstrap_data(user, get_locale()), + **cached_common_bootstrap_data(user, user_id, get_locale()), "flash_messages": get_flashed_messages(with_categories=True), } From 4c9ac95a774903adc29e727acfbce8a7636e19f4 Mon Sep 17 00:00:00 2001 From: Jack Fragassi Date: Sun, 19 Nov 2023 16:20:24 -0800 Subject: [PATCH 2/3] Appease pylint --- superset/views/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset/views/base.py b/superset/views/base.py index e8b74cd6b0a5c..d529bc2270b07 100644 --- a/superset/views/base.py +++ b/superset/views/base.py @@ -380,7 +380,7 @@ def menu_data(user: User) -> dict[str, Any]: @cache_manager.cache.memoize(timeout=60) -def cached_common_bootstrap_data( +def cached_common_bootstrap_data( # pylint: disable=unused-argument user: User, user_id: int | None, locale: str ) -> dict[str, Any]: """Common data always sent to the client From 6ee1eb86d1e1d7d7bd40b7a61caf68949e3c3def Mon Sep 17 00:00:00 2001 From: Jack Fragassi Date: Tue, 21 Nov 2023 14:38:03 -0800 Subject: [PATCH 3/3] Refactor --- superset/embedded/view.py | 4 ++-- superset/views/base.py | 15 +++++++-------- superset/views/core.py | 6 +++--- superset/views/dashboard/views.py | 2 +- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/superset/embedded/view.py b/superset/embedded/view.py index e59a6ced90f68..462c6046faaf0 100644 --- a/superset/embedded/view.py +++ b/superset/embedded/view.py @@ -17,7 +17,7 @@ import json from typing import Callable -from flask import abort, g, request +from flask import abort, request from flask_appbuilder import expose from flask_login import AnonymousUserMixin, login_user from flask_wtf.csrf import same_origin @@ -78,7 +78,7 @@ def embedded( ) bootstrap_data = { - "common": common_bootstrap_payload(g.user), + "common": common_bootstrap_payload(), "embedded": { "dashboard_id": embedded.dashboard_id, }, diff --git a/superset/views/base.py b/superset/views/base.py index d529bc2270b07..9149c7ad919ac 100644 --- a/superset/views/base.py +++ b/superset/views/base.py @@ -296,7 +296,7 @@ def render_app_template( ) -> FlaskResponse: payload = { "user": bootstrap_user_data(g.user, include_perms=True), - "common": common_bootstrap_payload(g.user), + "common": common_bootstrap_payload(), **(extra_bootstrap_data or {}), } return self.render_template( @@ -381,7 +381,7 @@ def menu_data(user: User) -> dict[str, Any]: @cache_manager.cache.memoize(timeout=60) def cached_common_bootstrap_data( # pylint: disable=unused-argument - user: User, user_id: int | None, locale: str + user_id: int | None, locale: str ) -> dict[str, Any]: """Common data always sent to the client @@ -419,16 +419,15 @@ def cached_common_bootstrap_data( # pylint: disable=unused-argument "extra_sequential_color_schemes": conf["EXTRA_SEQUENTIAL_COLOR_SCHEMES"], "extra_categorical_color_schemes": conf["EXTRA_CATEGORICAL_COLOR_SCHEMES"], "theme_overrides": conf["THEME_OVERRIDES"], - "menu_data": menu_data(user), + "menu_data": menu_data(g.user), } bootstrap_data.update(conf["COMMON_BOOTSTRAP_OVERRIDES_FUNC"](bootstrap_data)) return bootstrap_data -def common_bootstrap_payload(user: User) -> dict[str, Any]: - user_id = user.id if hasattr(user, "id") else None +def common_bootstrap_payload() -> dict[str, Any]: return { - **cached_common_bootstrap_data(user, user_id, get_locale()), + **cached_common_bootstrap_data(utils.get_user_id(), get_locale()), "flash_messages": get_flashed_messages(with_categories=True), } @@ -538,7 +537,7 @@ def show_unexpected_exception(ex: Exception) -> FlaskResponse: def get_common_bootstrap_data() -> dict[str, Any]: def serialize_bootstrap_data() -> str: return json.dumps( - {"common": common_bootstrap_payload(g.user)}, + {"common": common_bootstrap_payload()}, default=utils.pessimistic_json_iso_dttm_ser, ) @@ -556,7 +555,7 @@ class SupersetModelView(ModelView): def render_app_template(self) -> FlaskResponse: payload = { "user": bootstrap_user_data(g.user, include_perms=True), - "common": common_bootstrap_payload(g.user), + "common": common_bootstrap_payload(), } return self.render_template( "superset/spa.html", diff --git a/superset/views/core.py b/superset/views/core.py index 2f9b99eba0e61..252be769d2f43 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -605,7 +605,7 @@ def explore( "force": force, "user": bootstrap_user_data(g.user, include_perms=True), "forced_height": request.args.get("height"), - "common": common_bootstrap_payload(g.user), + "common": common_bootstrap_payload(), } if slc: title = slc.slice_name @@ -863,7 +863,7 @@ def dashboard( bootstrap_data=json.dumps( { "user": bootstrap_user_data(g.user, include_perms=True), - "common": common_bootstrap_payload(g.user), + "common": common_bootstrap_payload(), }, default=utils.pessimistic_json_iso_dttm_ser, ), @@ -954,7 +954,7 @@ def welcome(self) -> FlaskResponse: payload = { "user": bootstrap_user_data(g.user, include_perms=True), - "common": common_bootstrap_payload(g.user), + "common": common_bootstrap_payload(), } return self.render_template( diff --git a/superset/views/dashboard/views.py b/superset/views/dashboard/views.py index ce5e8f1e07507..0b41a67ee292f 100644 --- a/superset/views/dashboard/views.py +++ b/superset/views/dashboard/views.py @@ -151,7 +151,7 @@ def embedded( ) bootstrap_data = { - "common": common_bootstrap_payload(g.user), + "common": common_bootstrap_payload(), "embedded": {"dashboard_id": dashboard_id_or_slug}, }