Skip to content

Commit

Permalink
chore: deprecate multiple old APIs (#28492)
Browse files Browse the repository at this point in the history
  • Loading branch information
dpgaspar authored May 14, 2024
1 parent 4f693c6 commit c12deed
Show file tree
Hide file tree
Showing 11 changed files with 35 additions and 82 deletions.
4 changes: 2 additions & 2 deletions docs/docs/configuration/alerts-reports.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,6 @@ This configuration is based on
menu item called “Schedule” to SQL Lab. When the menu item is clicked, a modal will show up where
the user can add the metadata required for scheduling the query.

This information can then be retrieved from the endpoint `/savedqueryviewapi/api/read` and used to
schedule the queries that have `scheduled_queries` in their JSON metadata. For schedulers other than
This information can then be retrieved from the endpoint `/api/v1/saved_query/` and used to
schedule the queries that have `schedule_info` in their JSON metadata. For schedulers other than
Airflow, additional fields can be easily added to the configuration file above.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export default {
'Pick a set of deck.gl charts to layer on top of one another',
),
dataEndpoint:
'/sliceasync/api/read?_flt_0_viz_type=deck_&_flt_7_viz_type=deck_multi',
'api/v1/chart/?q=(filters:!((col:viz_type,opr:sw,value:deck)))',
placeholder: t('Select charts'),
onAsyncErrorMessage: t('Error while fetching charts'),
mutator: (data: {
Expand Down
16 changes: 12 additions & 4 deletions superset-frontend/src/SqlLab/actions/sqlLab.js
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,8 @@ export function setEditorTabLastUpdate(timestamp) {
export function scheduleQuery(query) {
return dispatch =>
SupersetClient.post({
endpoint: '/savedqueryviewapi/api/create',
postPayload: query,
endpoint: '/api/v1/saved_query/',
jsonPayload: query,
stringify: false,
})
.then(() =>
Expand Down Expand Up @@ -1214,15 +1214,23 @@ export function popStoredQuery(urlId) {
export function popSavedQuery(saveQueryId) {
return function (dispatch) {
return SupersetClient.get({
endpoint: `/savedqueryviewapi/api/get/${saveQueryId}`,
endpoint: `/api/v1/saved_query/${saveQueryId}`,
})
.then(({ json }) => {
const queryEditorProps = {
...convertQueryToClient(json.result),
loaded: true,
autorun: false,
};
return dispatch(addQueryEditor(queryEditorProps));
const tmpAdaptedProps = {
name: queryEditorProps.name,
dbId: queryEditorProps.database.id,
catalog: queryEditorProps.catalog,
schema: queryEditorProps.schema,
sql: queryEditorProps.sql,
templateParams: queryEditorProps.templateParams,
};
return dispatch(addQueryEditor(tmpAdaptedProps));
})
.catch(() => dispatch(addDangerToast(ERR_MSG_CANT_LOAD_QUERY)));
};
Expand Down
3 changes: 1 addition & 2 deletions superset/initialization/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ def init_views(self) -> None:
from superset.sqllab.api import SqlLabRestApi
from superset.tags.api import TagRestApi
from superset.views.alerts import AlertView, ReportView
from superset.views.all_entities import TaggedObjectsModelView, TaggedObjectView
from superset.views.all_entities import TaggedObjectsModelView
from superset.views.annotations import AnnotationLayerView
from superset.views.api import Api
from superset.views.chart.views import SliceAsync, SliceModelView
Expand Down Expand Up @@ -309,7 +309,6 @@ def init_views(self) -> None:
appbuilder.add_view_no_menu(TableModelView)
appbuilder.add_view_no_menu(TableSchemaView)
appbuilder.add_view_no_menu(TabStateView)
appbuilder.add_view_no_menu(TaggedObjectView)
appbuilder.add_view_no_menu(TaggedObjectsModelView)
appbuilder.add_view_no_menu(TagView)
appbuilder.add_view_no_menu(ReportView)
Expand Down
1 change: 1 addition & 0 deletions superset/queries/saved_queries/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ class SavedQueryRestApi(BaseSupersetModelRestApi):
"schema",
"sql",
"template_parameters",
"extra_json",
]
edit_columns = add_columns
order_columns = [
Expand Down
28 changes: 1 addition & 27 deletions superset/views/all_entities.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,37 +18,22 @@
import logging

from flask_appbuilder import expose
from flask_appbuilder.hooks import before_request
from flask_appbuilder.models.sqla.interface import SQLAInterface
from flask_appbuilder.security.decorators import has_access
from jinja2.sandbox import SandboxedEnvironment
from werkzeug.exceptions import NotFound

from superset import is_feature_enabled
from superset.jinja_context import ExtraCache
from superset.superset_typing import FlaskResponse
from superset.tags.models import Tag
from superset.views.base import SupersetModelView

from .base import BaseSupersetView

logger = logging.getLogger(__name__)


def process_template(content: str) -> str:
env = SandboxedEnvironment()
template = env.from_string(content)
context = {
"current_user_id": ExtraCache.current_user_id,
"current_username": ExtraCache.current_username,
}
return template.render(context)


class TaggedObjectsModelView(SupersetModelView):
route_base = "/superset/all_entities"
datamodel = SQLAInterface(Tag)
class_permission_name = "Tags"
include_route_methods = {"list"}

@has_access
@expose("/")
Expand All @@ -57,14 +42,3 @@ def list(self) -> FlaskResponse:
return super().list()

return super().render_app_template()


class TaggedObjectView(BaseSupersetView):
@staticmethod
def is_enabled() -> bool:
return is_feature_enabled("TAGGING_SYSTEM")

@before_request
def ensure_enabled(self) -> None:
if not self.is_enabled():
raise NotFound()
1 change: 1 addition & 0 deletions superset/views/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -562,6 +562,7 @@ class DeprecateModelViewMixin:
def add(self) -> FlaskResponse:
return super().add() # type: ignore

@expose("/show/<pk>", methods=["GET"])
@has_access
@deprecated(eol_version="5.0.0")
def show(self, pk: int) -> FlaskResponse:
Expand Down
6 changes: 4 additions & 2 deletions superset/views/chart/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@
from superset.models.slice import Slice
from superset.superset_typing import FlaskResponse
from superset.utils import core as utils
from superset.views.base import DeleteMixin, SupersetModelView
from superset.views.base import DeleteMixin, DeprecateModelViewMixin, SupersetModelView
from superset.views.chart.mixin import SliceMixin


class SliceModelView(SliceMixin, SupersetModelView, DeleteMixin): # pylint: disable=too-many-ancestors
class SliceModelView(
DeprecateModelViewMixin, SliceMixin, SupersetModelView, DeleteMixin
): # pylint: disable=too-many-ancestors
route_base = "/chart"
datamodel = SQLAInterface(Slice)
include_route_methods = RouteMethod.CRUD_SET | {
Expand Down
38 changes: 8 additions & 30 deletions superset/views/database/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
from superset.utils import core as utils
from superset.views.base import (
DeleteMixin,
deprecated,
DeprecateModelViewMixin,
SupersetModelView,
YamlExportMixin,
)
Expand Down Expand Up @@ -75,7 +75,13 @@ def upload_stream_write(form_file_field: "FileStorage", path: str) -> None:
file_description.write(chunk)


class DatabaseView(DatabaseMixin, SupersetModelView, DeleteMixin, YamlExportMixin): # pylint: disable=too-many-ancestors
class DatabaseView(
DeprecateModelViewMixin,
DatabaseMixin,
SupersetModelView,
DeleteMixin,
YamlExportMixin,
): # pylint: disable=too-many-ancestors
datamodel = SQLAInterface(models.Database)

class_permission_name = "Database"
Expand All @@ -92,34 +98,6 @@ class DatabaseView(DatabaseMixin, SupersetModelView, DeleteMixin, YamlExportMixi

yaml_dict_key = "databases"

@expose("/show/<pk>", methods=["GET"])
@has_access
@deprecated(eol_version="5.0.0")
def show(self, pk: int) -> FlaskResponse:
"""Show database"""
return super().show(pk)

@expose("/add", methods=["GET", "POST"])
@has_access
@deprecated(eol_version="5.0.0")
def add(self) -> FlaskResponse:
return super().add()

@expose("/edit/<pk>", methods=["GET", "POST"])
@has_access
@deprecated(eol_version="5.0.0")
def edit(self, pk: int) -> FlaskResponse:
return super().edit(pk)

@expose("/delete/<pk>", methods=["GET", "POST"])
@has_access
@deprecated(eol_version="5.0.0")
def delete(self, pk: int) -> FlaskResponse:
return super().delete(pk)

def _delete(self, pk: int) -> None:
DeleteMixin._delete(self, pk)

@expose("/list/")
@has_access
def list(self) -> FlaskResponse:
Expand Down
5 changes: 3 additions & 2 deletions superset/views/sql_lab/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,15 @@
from superset.views.base import (
BaseSupersetView,
DeleteMixin,
DeprecateModelViewMixin,
json_success,
SupersetModelView,
)

logger = logging.getLogger(__name__)


class SavedQueryView(BaseSupersetView):
class SavedQueryView(DeprecateModelViewMixin, BaseSupersetView):
route_base = "/savedqueryview"
class_permission_name = "SavedQuery"

Expand All @@ -50,7 +51,7 @@ def list(self) -> FlaskResponse:
return super().render_app_template()


class SavedQueryViewApi(SupersetModelView, DeleteMixin): # pylint: disable=too-many-ancestors
class SavedQueryViewApi(DeprecateModelViewMixin, SupersetModelView, DeleteMixin): # pylint: disable=too-many-ancestors
datamodel = SQLAInterface(SavedQuery)
include_route_methods = RouteMethod.CRUD_SET
route_base = "/savedqueryviewapi"
Expand Down
13 changes: 1 addition & 12 deletions superset/views/tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,9 @@
from flask_appbuilder.hooks import before_request
from flask_appbuilder.models.sqla.interface import SQLAInterface
from flask_appbuilder.security.decorators import has_access, has_access_api
from jinja2.sandbox import SandboxedEnvironment
from werkzeug.exceptions import NotFound

from superset import db, is_feature_enabled, utils
from superset.jinja_context import ExtraCache
from superset.superset_typing import FlaskResponse
from superset.tags.models import Tag
from superset.views.base import SupersetModelView
Expand All @@ -36,20 +34,11 @@
logger = logging.getLogger(__name__)


def process_template(content: str) -> str:
env = SandboxedEnvironment()
template = env.from_string(content)
context = {
"current_user_id": ExtraCache.current_user_id,
"current_username": ExtraCache.current_username,
}
return template.render(context)


class TagModelView(SupersetModelView):
route_base = "/superset/tags"
datamodel = SQLAInterface(Tag)
class_permission_name = "Tags"
include_route_methods = {"list"}

@has_access
@expose("/")
Expand Down

0 comments on commit c12deed

Please sign in to comment.