You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by mi...@apache.org on 2023/08/31 11:45:58 UTC
[superset] branch master updated: fix: Partially reverts #25007 (#25124)
This is an automated email from the ASF dual-hosted git repository.
michaelsmolina pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 1144ac15c9 fix: Partially reverts #25007 (#25124)
1144ac15c9 is described below
commit 1144ac15c9106b27d48b9363d80b0793ccb0507e
Author: Michael S. Molina <70...@users.noreply.github.com>
AuthorDate: Thu Aug 31 08:45:50 2023 -0300
fix: Partially reverts #25007 (#25124)
---
superset/initialization/__init__.py | 2 ++
superset/views/sql_lab/views.py | 38 +++++++++++++++++++++++++++++++++++--
2 files changed, 38 insertions(+), 2 deletions(-)
diff --git a/superset/initialization/__init__.py b/superset/initialization/__init__.py
index 4398c0c6be..61205f38df 100644
--- a/superset/initialization/__init__.py
+++ b/superset/initialization/__init__.py
@@ -187,6 +187,7 @@ class SupersetAppInitializer: # pylint: disable=too-many-public-methods
from superset.views.redirects import R
from superset.views.sql_lab.views import (
SavedQueryView,
+ SavedQueryViewApi,
SqlLab,
TableSchemaView,
TabStateView,
@@ -312,6 +313,7 @@ class SupersetAppInitializer: # pylint: disable=too-many-public-methods
appbuilder.add_view_no_menu(R)
appbuilder.add_view_no_menu(ProfileView)
appbuilder.add_view_no_menu(SavedQueryView)
+ appbuilder.add_view_no_menu(SavedQueryViewApi)
appbuilder.add_view_no_menu(SliceAsync)
appbuilder.add_view_no_menu(SqlLab)
appbuilder.add_view_no_menu(SqlMetricInlineView)
diff --git a/superset/views/sql_lab/views.py b/superset/views/sql_lab/views.py
index 62558f5ab5..f07705bac3 100644
--- a/superset/views/sql_lab/views.py
+++ b/superset/views/sql_lab/views.py
@@ -19,16 +19,23 @@ import logging
import simplejson as json
from flask import redirect, request, Response
from flask_appbuilder import expose
+from flask_appbuilder.models.sqla.interface import SQLAInterface
from flask_appbuilder.security.decorators import has_access, has_access_api
from flask_babel import lazy_gettext as _
from sqlalchemy import and_
from superset import db
-from superset.models.sql_lab import Query, TableSchema, TabState
+from superset.constants import MODEL_VIEW_RW_METHOD_PERMISSION_MAP, RouteMethod
+from superset.models.sql_lab import Query, SavedQuery, TableSchema, TabState
from superset.superset_typing import FlaskResponse
from superset.utils import core as utils
from superset.utils.core import get_user_id
-from superset.views.base import BaseSupersetView, json_success
+from superset.views.base import (
+ BaseSupersetView,
+ DeleteMixin,
+ json_success,
+ SupersetModelView,
+)
logger = logging.getLogger(__name__)
@@ -43,6 +50,33 @@ class SavedQueryView(BaseSupersetView):
return super().render_app_template()
+class SavedQueryViewApi(
+ SupersetModelView, DeleteMixin
+): # pylint: disable=too-many-ancestors
+ datamodel = SQLAInterface(SavedQuery)
+ include_route_methods = RouteMethod.CRUD_SET
+ route_base = "/savedqueryviewapi"
+ class_permission_name = "SavedQuery"
+
+ include_route_methods = {
+ RouteMethod.API_READ,
+ RouteMethod.API_CREATE,
+ RouteMethod.API_UPDATE,
+ RouteMethod.API_GET,
+ }
+
+ method_permission_name = MODEL_VIEW_RW_METHOD_PERMISSION_MAP
+
+ add_columns = ["label", "db_id", "schema", "description", "sql", "extra_json"]
+ edit_columns = add_columns
+ show_columns = add_columns + ["id"]
+
+ @has_access_api
+ @expose("show/<pk>")
+ def show(self, pk: int) -> FlaskResponse:
+ return super().show(pk)
+
+
def _get_owner_id(tab_state_id: int) -> int:
return db.session.query(TabState.user_id).filter_by(id=tab_state_id).scalar()