From 7cf726708520c6485b12dab2c5416b13bd83670b Mon Sep 17 00:00:00 2001 From: "Michael S. Molina" <70410625+michael-s-molina@users.noreply.github.com> Date: Wed, 22 Jan 2025 15:39:04 -0300 Subject: [PATCH] refactor: Removes legacy dashboard endpoints (#31943) --- superset/initialization/__init__.py | 2 - superset/views/dashboard/views.py | 75 ++--------------------------- 2 files changed, 3 insertions(+), 74 deletions(-) diff --git a/superset/initialization/__init__.py b/superset/initialization/__init__.py index 2fe230355..67426b2de 100644 --- a/superset/initialization/__init__.py +++ b/superset/initialization/__init__.py @@ -169,7 +169,6 @@ class SupersetAppInitializer: # pylint: disable=too-many-public-methods from superset.views.dashboard.views import ( Dashboard, DashboardModelView, - DashboardModelViewAsync, ) from superset.views.database.views import DatabaseView from superset.views.datasource.views import DatasetEditor, Datasource @@ -295,7 +294,6 @@ class SupersetAppInitializer: # pylint: disable=too-many-public-methods # appbuilder.add_view_no_menu(Api) appbuilder.add_view_no_menu(Dashboard) - appbuilder.add_view_no_menu(DashboardModelViewAsync) appbuilder.add_view_no_menu(Datasource) appbuilder.add_view_no_menu(DatasetEditor) appbuilder.add_view_no_menu(EmbeddedView) diff --git a/superset/views/dashboard/views.py b/superset/views/dashboard/views.py index 8a419fcb2..fb70c7b39 100644 --- a/superset/views/dashboard/views.py +++ b/superset/views/dashboard/views.py @@ -17,17 +17,12 @@ import builtins from typing import Callable, Union -from flask import g, redirect, request, Response +from flask import g, redirect, Response from flask_appbuilder import expose from flask_appbuilder.actions import action -from flask_appbuilder.baseviews import expose_api from flask_appbuilder.models.sqla.interface import SQLAInterface -from flask_appbuilder.security.decorators import ( - has_access, - has_access_api, - permission_name, -) -from flask_babel import gettext as __, lazy_gettext as _ +from flask_appbuilder.security.decorators import has_access +from flask_babel import gettext as __ from flask_login import AnonymousUserMixin, login_user from superset import db, event_logger, is_feature_enabled @@ -39,8 +34,6 @@ from superset.views.base import ( BaseSupersetView, common_bootstrap_payload, DeleteMixin, - deprecated, - generate_download_headers, SupersetModelView, ) from superset.views.dashboard.mixin import DashboardMixin @@ -61,20 +54,6 @@ class DashboardModelView(DashboardMixin, SupersetModelView, DeleteMixin): # pyl "download_dashboards", } - @expose_api(name="read", url="/api/read", methods=["GET"]) - @has_access_api - @permission_name("list") - @deprecated(eol_version="5.0.0") - def api_read(self) -> FlaskResponse: - return super().api_read() - - @expose_api(name="delete", url="/api/delete/", methods=["DELETE"]) - @has_access_api - @permission_name("delete") - @deprecated(eol_version="5.0.0") - def api_delete(self, pk: int) -> FlaskResponse: - return super().delete(pk) - @has_access @expose("/list/") def list(self) -> FlaskResponse: @@ -90,22 +69,6 @@ class DashboardModelView(DashboardMixin, SupersetModelView, DeleteMixin): # pyl ids = "".join(f"&id={d.id}" for d in items) return redirect(f"/dashboard/export_dashboards_form?{ids[1:]}") - @event_logger.log_this - @has_access - @expose("/export_dashboards_form") - @deprecated(eol_version="5.0.0") - def download_dashboards(self) -> FlaskResponse: - if request.args.get("action") == "go": - ids = set(request.args.getlist("id")) - return Response( - DashboardModel.export_dashboards(ids), - headers=generate_download_headers("json"), - mimetype="application/text", - ) - return self.render_template( - "superset/export_dashboards.html", dashboards_url="/dashboard/list" - ) - class Dashboard(BaseSupersetView): """The base views for Superset!""" @@ -163,35 +126,3 @@ class Dashboard(BaseSupersetView): bootstrap_data, default=json.pessimistic_json_iso_dttm_ser ), ) - - -class DashboardModelViewAsync(DashboardModelView): # pylint: disable=too-many-ancestors - route_base = "/dashboardasync" - class_permission_name = "Dashboard" - method_permission_name = MODEL_VIEW_RW_METHOD_PERMISSION_MAP - - include_route_methods = {RouteMethod.API_READ} - - list_columns = [ - "id", - "dashboard_link", - "creator", - "modified", - "dashboard_title", - "changed_on", - "url", - "changed_by_name", - ] - label_columns = { - "dashboard_link": _("Dashboard"), - "dashboard_title": _("Title"), - "creator": _("Creator"), - "modified": _("Modified"), - } - - @expose_api(name="read", url="/api/read", methods=["GET"]) - @has_access_api - @permission_name("list") - @deprecated(eol_version="5.0.0") - def api_read(self) -> FlaskResponse: - return super().api_read()