You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ma...@apache.org on 2022/09/29 05:19:55 UTC

[superset] branch fix-21635 created (now 1e6e2cfa8a)

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

mayurnewase pushed a change to branch fix-21635
in repository https://gitbox.apache.org/repos/asf/superset.git


      at 1e6e2cfa8a check slice cache timeout

This branch includes the following new commits:

     new 7e29e210db check slice cache timeout
     new 1e6e2cfa8a check slice cache timeout

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[superset] 01/02: check slice cache timeout

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mayurnewase pushed a commit to branch fix-21635
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 7e29e210dbb3d90514522b7900e1bd6f672363a9
Author: Mayur <ma...@gmail.com>
AuthorDate: Thu Sep 29 10:48:58 2022 +0530

    check slice cache timeout
---
 superset/common/query_context.py         |  6 ++++++
 superset/common/query_context_factory.py | 12 ++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/superset/common/query_context.py b/superset/common/query_context.py
index 4a91c6ad6d..b9414fddd1 100644
--- a/superset/common/query_context.py
+++ b/superset/common/query_context.py
@@ -27,6 +27,7 @@ from superset.common.query_context_processor import (
     QueryContextProcessor,
 )
 from superset.common.query_object import QueryObject
+from superset.models.slice import Slice
 
 if TYPE_CHECKING:
     from superset.connectors.base.models import BaseDatasource
@@ -46,6 +47,7 @@ class QueryContext:
     enforce_numerical_metrics: ClassVar[bool] = True
 
     datasource: BaseDatasource
+    slice_id: Optional[int] = None
     queries: List[QueryObject]
     form_data: Optional[Dict[str, Any]]
     result_type: ChartDataResultType
@@ -64,6 +66,7 @@ class QueryContext:
         *,
         datasource: BaseDatasource,
         queries: List[QueryObject],
+        slice: Optional[Slice],
         form_data: Optional[Dict[str, Any]],
         result_type: ChartDataResultType,
         result_format: ChartDataResultFormat,
@@ -72,6 +75,7 @@ class QueryContext:
         cache_values: Dict[str, Any],
     ) -> None:
         self.datasource = datasource
+        self.slice = slice
         self.result_type = result_type
         self.result_format = result_format
         self.queries = queries
@@ -98,6 +102,8 @@ class QueryContext:
     def get_cache_timeout(self) -> Optional[int]:
         if self.custom_cache_timeout is not None:
             return self.custom_cache_timeout
+        if self.slice and self.slice.cache_timeout:
+            return self.slice.cache_timeout
         if self.datasource.cache_timeout is not None:
             return self.datasource.cache_timeout
         if hasattr(self.datasource, "database"):
diff --git a/superset/common/query_context_factory.py b/superset/common/query_context_factory.py
index dc43d28de9..84fdeb7109 100644
--- a/superset/common/query_context_factory.py
+++ b/superset/common/query_context_factory.py
@@ -19,10 +19,12 @@ from __future__ import annotations
 from typing import Any, Dict, List, Optional, TYPE_CHECKING
 
 from superset import app, db
+from superset.charts.dao import ChartDAO
 from superset.common.chart_data import ChartDataResultFormat, ChartDataResultType
 from superset.common.query_context import QueryContext
 from superset.common.query_object_factory import QueryObjectFactory
 from superset.datasource.dao import DatasourceDAO
+from superset.models.slice import Slice
 from superset.utils.core import DatasourceDict, DatasourceType
 
 if TYPE_CHECKING:
@@ -55,6 +57,12 @@ class QueryContextFactory:  # pylint: disable=too-few-public-methods
         datasource_model_instance = None
         if datasource:
             datasource_model_instance = self._convert_to_model(datasource)
+
+        slice = None
+        if form_data and form_data.get("slice_id") is not None:
+            slice_id = form_data.get("slice_id")
+            slice = self._get_slice(slice_id)
+
         result_type = result_type or ChartDataResultType.FULL
         result_format = result_format or ChartDataResultFormat.JSON
         queries_ = [
@@ -72,6 +80,7 @@ class QueryContextFactory:  # pylint: disable=too-few-public-methods
         return QueryContext(
             datasource=datasource_model_instance,
             queries=queries_,
+            slice=slice,
             form_data=form_data,
             result_type=result_type,
             result_format=result_format,
@@ -88,3 +97,6 @@ class QueryContextFactory:  # pylint: disable=too-few-public-methods
             datasource_type=DatasourceType(datasource["type"]),
             datasource_id=int(datasource["id"]),
         )
+
+    def _get_slice(self, slice_id: Any) -> Optional[Slice]:
+        return ChartDAO.find_by_id(slice_id)


[superset] 02/02: check slice cache timeout

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mayurnewase pushed a commit to branch fix-21635
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 1e6e2cfa8ad8628cbbdf26623b8a2d4e34b4886a
Author: Mayur <ma...@gmail.com>
AuthorDate: Thu Sep 29 10:49:15 2022 +0530

    check slice cache timeout
---
 superset/common/query_context_factory.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/superset/common/query_context_factory.py b/superset/common/query_context_factory.py
index 84fdeb7109..ee6fdefe34 100644
--- a/superset/common/query_context_factory.py
+++ b/superset/common/query_context_factory.py
@@ -60,8 +60,7 @@ class QueryContextFactory:  # pylint: disable=too-few-public-methods
 
         slice = None
         if form_data and form_data.get("slice_id") is not None:
-            slice_id = form_data.get("slice_id")
-            slice = self._get_slice(slice_id)
+            slice = self._get_slice(form_data.get("slice_id"))
 
         result_type = result_type or ChartDataResultType.FULL
         result_format = result_format or ChartDataResultFormat.JSON