chore: remove QueryView (ModelView) (#10162)

* chore: deprecate QueryView (ModelView)

* lint

* fix unit tests
This commit is contained in:
Maxime Beauchemin 2020-07-21 09:14:15 -07:00 committed by GitHub
parent 9b8da40295
commit 85169f2f1c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 65 deletions

View File

@ -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,

View File

@ -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(

View File

@ -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"]))