From 54b313c6592efe7799b395f421f4b1baffc3d5de Mon Sep 17 00:00:00 2001 From: mcdogg17 <63260972+mcdogg17@users.noreply.github.com> Date: Tue, 17 Mar 2026 21:29:32 +0500 Subject: [PATCH] fix(dashboard): overload issue in dashboard export to excel (#29418) Co-authored-by: Evan Rusackas Co-authored-by: Claude Co-authored-by: Claude Sonnet 4.6 --- superset/common/query_context_factory.py | 5 ++++- superset/models/slice.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/superset/common/query_context_factory.py b/superset/common/query_context_factory.py index a60eac43848..0d1539a9a16 100644 --- a/superset/common/query_context_factory.py +++ b/superset/common/query_context_factory.py @@ -45,6 +45,7 @@ class QueryContextFactory: # pylint: disable=too-few-public-methods def create( # pylint: disable=too-many-arguments self, *, + current_slice: Slice | None = None, datasource: DatasourceDict, queries: list[dict[str, Any]], form_data: dict[str, Any] | None = None, @@ -58,7 +59,9 @@ class QueryContextFactory: # pylint: disable=too-few-public-methods datasource_model_instance = self._convert_to_model(datasource) slice_ = None - if form_data and form_data.get("slice_id") is not None: + if isinstance(current_slice, Slice): + slice_ = current_slice + elif form_data and form_data.get("slice_id") is not None: slice_ = self._get_slice(form_data.get("slice_id")) result_type = result_type or ChartDataResultType.FULL diff --git a/superset/models/slice.py b/superset/models/slice.py index 5fce86d79e2..8b864f4ddc2 100644 --- a/superset/models/slice.py +++ b/superset/models/slice.py @@ -274,7 +274,7 @@ class Slice( # pylint: disable=too-many-public-methods if self.query_context: try: return self.get_query_context_factory().create( - **json.loads(self.query_context) + **{**json.loads(self.query_context), "current_slice": self} ) except json.JSONDecodeError as ex: logger.error("Malformed json in slice's query context", exc_info=True)