You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by hu...@apache.org on 2022/08/16 20:45:40 UTC

[superset] branch spa-bsd-sql-endpoint updated: add bootstrap logic

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

hugh pushed a commit to branch spa-bsd-sql-endpoint
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/spa-bsd-sql-endpoint by this push:
     new 4938f8ff41 add bootstrap logic
4938f8ff41 is described below

commit 4938f8ff411675dd4cbc37cc31cb98faecae5dda
Author: hughhhh <hu...@gmail.com>
AuthorDate: Tue Aug 16 16:45:23 2022 -0400

    add bootstrap logic
---
 superset/sql/api.py | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/superset/sql/api.py b/superset/sql/api.py
index 7653acf492..5b69cf8af0 100644
--- a/superset/sql/api.py
+++ b/superset/sql/api.py
@@ -14,11 +14,13 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+import json
 import logging
 
 from flask import g, request, Response
 from flask_appbuilder.api import BaseApi, expose, protect, safe
 
+from superset import app
 from superset.charts.commands.exceptions import ChartNotFoundError
 from superset.constants import MODEL_API_RW_METHOD_PERMISSION_MAP, RouteMethod
 from superset.explore.commands.get import GetExploreCommand
@@ -27,9 +29,15 @@ from superset.explore.exceptions import DatasetAccessDeniedError, WrongEndpointE
 from superset.explore.permalink.exceptions import ExplorePermalinkGetFailedError
 from superset.explore.schemas import ExploreContextSchema
 from superset.extensions import event_logger
+from superset.utils import core as utils
+from superset.utils.core import get_user_id
+from superset.views.base import common_bootstrap_payload
+from superset.views.utils import bootstrap_user_data
 
 logger = logging.getLogger(__name__)
 
+config = app.config
+
 
 class SqlRestApi(BaseApi):
     method_permission_name = MODEL_API_RW_METHOD_PERMISSION_MAP
@@ -48,4 +56,22 @@ class SqlRestApi(BaseApi):
         log_to_statsd=True,
     )
     def get(self) -> Response:
-        return self.response(200, result={"foo": "bar"})
+        payload = {
+            "defaultDbId": config["SQLLAB_DEFAULT_DBID"],
+            "common": common_bootstrap_payload(),
+            **self._get_sqllab_tabs(get_user_id()),
+        }
+
+        form_data = request.form.get("form_data")
+        if form_data:
+            try:
+                payload["requested_query"] = json.loads(form_data)
+            except json.JSONDecodeError:
+                pass
+
+        payload["user"] = bootstrap_user_data(g.user, include_perms=True)
+        bootstrap_data = json.dumps(
+            payload, default=utils.pessimistic_json_iso_dttm_ser
+        )
+
+        return self.response(200, result=bootstrap_data)