You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by su...@apache.org on 2021/02/03 04:25:52 UTC

[superset] 01/09: feat(dashboard): get endpoint for a dashboard's charts

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

suddjian pushed a commit to branch dashboard-bootstrap
in repository https://gitbox.apache.org/repos/asf/superset.git

commit eecefc5a698704e3e1a5bf88da8ef06e3fef261c
Author: David Aaron Suddjian <aa...@gmail.com>
AuthorDate: Tue Jan 19 15:18:40 2021 -0800

    feat(dashboard): get endpoint for a dashboard's charts
---
 superset/dashboards/api.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 superset/dashboards/dao.py |  6 ++++++
 2 files changed, 52 insertions(+)

diff --git a/superset/dashboards/api.py b/superset/dashboards/api.py
index 61b56b1..6366688 100644
--- a/superset/dashboards/api.py
+++ b/superset/dashboards/api.py
@@ -210,6 +210,52 @@ class DashboardRestApi(BaseSupersetModelRestApi):
             self.include_route_methods = self.include_route_methods | {"thumbnail"}
         super().__init__()
 
+    @expose("/<pk>/charts/", methods=["GET"])
+    @protect()
+    @safe
+    @statsd_metrics
+    @event_logger.log_this_with_context(
+        action=lambda self, *args, **kwargs: f"{self.__class__.__name__}.get_charts",
+        log_to_statsd=False,
+    )
+    def get_charts(self, pk: int) -> Response:
+        """Change this later
+        ---
+        post:
+          description: >-
+            Create a new Dashboard.
+          requestBody:
+            description: Dashboard schema
+            required: true
+            content:
+              application/json:
+                schema:
+                  $ref: '#/components/schemas/{{self.__class__.__name__}}.post'
+          responses:
+            201:
+              description: Dashboard added
+              content:
+                application/json:
+                  schema:
+                    type: object
+                    properties:
+                      id:
+                        type: number
+                      result:
+                        $ref: '#/components/schemas/{{self.__class__.__name__}}.post'
+            302:
+              description: Redirects to the current digest
+            400:
+              $ref: '#/components/responses/400'
+            401:
+              $ref: '#/components/responses/401'
+            404:
+              $ref: '#/components/responses/404'
+            500:
+              $ref: '#/components/responses/500'
+        """
+        DashboardDAO.get_charts_for_dashboard(pk)
+
     @expose("/", methods=["POST"])
     @protect()
     @safe
diff --git a/superset/dashboards/dao.py b/superset/dashboards/dao.py
index 65bdc69..aae75c8 100644
--- a/superset/dashboards/dao.py
+++ b/superset/dashboards/dao.py
@@ -23,6 +23,7 @@ from sqlalchemy.exc import SQLAlchemyError
 from superset.dao.base import BaseDAO
 from superset.dashboards.filters import DashboardFilter
 from superset.extensions import db
+from superset.models.slice import Slice
 from superset.models.core import FavStar, FavStarClassName
 from superset.models.dashboard import Dashboard
 from superset.models.slice import Slice
@@ -36,6 +37,11 @@ class DashboardDAO(BaseDAO):
     base_filter = DashboardFilter
 
     @staticmethod
+    def get_charts_for_dashboard(dashboard_id: int) -> List[Slice]:
+        query = db.session.query(Dashboard).filter(Dashboard.id == dashboard_id)
+        logger.info(query.__dict__)
+
+    @staticmethod
     def validate_slug_uniqueness(slug: str) -> bool:
         if not slug:
             return True