diff --git a/superset/app.py b/superset/app.py index d40923b25..5dc06840f 100644 --- a/superset/app.py +++ b/superset/app.py @@ -176,7 +176,6 @@ class SupersetAppInitializer: AlertLogModelView, ) from superset.views.sql_lab import ( - QueryView, SavedQueryViewApi, SavedQueryView, TabStateView, @@ -249,14 +248,6 @@ class SupersetAppInitializer: category_label=__("Manage"), category_icon="", ) - appbuilder.add_view( - QueryView, - "Queries", - label=__("Queries"), - category="Manage", - category_label=__("Manage"), - icon="fa-search", - ) if self.config["ENABLE_ROW_LEVEL_SECURITY"]: appbuilder.add_view( RowLevelSecurityFiltersModelView, diff --git a/superset/views/sql_lab.py b/superset/views/sql_lab.py index 6096349a9..606e9a61e 100644 --- a/superset/views/sql_lab.py +++ b/superset/views/sql_lab.py @@ -14,64 +14,20 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -from typing import Any - import simplejson as json from flask import g, 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 flask_sqlalchemy import BaseQuery -from superset import db, get_feature_flags, security_manager +from superset import db, get_feature_flags from superset.constants import RouteMethod from superset.models.sql_lab import Query, SavedQuery, TableSchema, TabState from superset.typing import FlaskResponse from superset.utils import core as utils -from .base import ( - BaseFilter, - BaseSupersetView, - DeleteMixin, - json_success, - SupersetModelView, -) - - -class QueryFilter(BaseFilter): # pylint: disable=too-few-public-methods - def apply(self, query: BaseQuery, value: Any) -> BaseQuery: - """ - Filter queries to only those owned by current user. If - can_access_all_queries permission is set a user can list all queries - - :returns: query - """ - if not security_manager.can_access_all_queries(): - query = query.filter(Query.user_id == g.user.get_user_id()) - return query - - -class QueryView(SupersetModelView): - datamodel = SQLAInterface(Query) - include_route_methods = {RouteMethod.SHOW, RouteMethod.LIST, RouteMethod.API_READ} - - list_title = _("List Query") - show_title = _("Show Query") - add_title = _("Add Query") - edit_title = _("Edit Query") - - list_columns = ["username", "database_name", "status", "start_time", "end_time"] - order_columns = ["status", "start_time", "end_time"] - base_filters = [["id", QueryFilter, lambda: []]] - label_columns = { - "user": _("User"), - "username": _("User"), - "database_name": _("Database"), - "status": _("Status"), - "start_time": _("Start Time"), - "end_time": _("End Time"), - } +from .base import BaseSupersetView, DeleteMixin, json_success, SupersetModelView class SavedQueryView( diff --git a/tests/sqllab_tests.py b/tests/sqllab_tests.py index a43a4b16f..bc247b048 100644 --- a/tests/sqllab_tests.py +++ b/tests/sqllab_tests.py @@ -411,26 +411,26 @@ class TestSqlLab(SupersetTestCase): ) self.assertEqual(len(data["data"]), test_limit) - def test_queryview_filter(self) -> None: + def test_query_api_filter(self) -> None: """ - Test queryview api without can_only_access_owned_queries perm added to + Test query api without can_only_access_owned_queries perm added to Admin and make sure all queries show up. """ self.run_some_queries() self.login(username="admin") - url = "/queryview/api/read" + url = "/api/v1/query/" data = self.get_json_resp(url) admin = security_manager.find_user("admin") gamma_sqllab = security_manager.find_user("gamma_sqllab") self.assertEqual(3, len(data["result"])) - user_queries = [result.get("username") for result in data["result"]] + user_queries = [result.get("user").get("username") for result in data["result"]] assert admin.username in user_queries assert gamma_sqllab.username in user_queries - def test_queryview_can_access_all_queries(self) -> None: + def test_query_api_can_access_all_queries(self) -> None: """ - Test queryview api with can_access_all_queries perm added to + Test query api with can_access_all_queries perm added to gamma and make sure all queries show up. """ session = db.session @@ -448,7 +448,7 @@ class TestSqlLab(SupersetTestCase): # Test search_queries for Admin user self.run_some_queries() self.login("gamma_sqllab") - url = "/queryview/api/read" + url = "/api/v1/query/" data = self.get_json_resp(url) self.assertEqual(3, len(data["result"])) @@ -462,16 +462,16 @@ class TestSqlLab(SupersetTestCase): session.commit() - def test_queryview_admin_can_access_all_queries(self) -> None: + def test_query_admin_can_access_all_queries(self) -> None: """ - Test queryview api with all_query_access perm added to + Test query api with all_query_access perm added to Admin and make sure only Admin queries show up. This is the default """ # Test search_queries for Admin user self.run_some_queries() self.login("admin") - url = "/queryview/api/read" + url = "/api/v1/query/" data = self.get_json_resp(url) admin = security_manager.find_user("admin") self.assertEqual(3, len(data["result"]))