diff --git a/superset/sqllab/permalink/api.py b/superset/sqllab/permalink/api.py index 35eae9f9062f1..4bdd293414829 100644 --- a/superset/sqllab/permalink/api.py +++ b/superset/sqllab/permalink/api.py @@ -87,7 +87,7 @@ def post(self) -> Response: try: state = self.add_model_schema.load(request.json) key = CreateSqlLabPermalinkCommand(state=state).run() - url = url_for("SqllabView.root", key=key, _external=True) + url = url_for("SqllabView.permalink_view", permalink=key, _external=True) return self.response(201, key=key, url=url) except ValidationError as ex: return self.response(400, message=ex.messages) diff --git a/superset/views/sqllab.py b/superset/views/sqllab.py index b34a3af7d4e4b..740b241f13b0d 100644 --- a/superset/views/sqllab.py +++ b/superset/views/sqllab.py @@ -37,17 +37,25 @@ class SqllabView(BaseSupersetView): method_permission_name = MODEL_API_RW_METHOD_PERMISSION_MAP @expose("/", methods=["GET", "POST"]) - @expose("/p//", methods=["GET"]) @has_access @permission_name("read") @event_logger.log_this def root(self, **kwargs: Any) -> FlaskResponse: + """Handles the default SQL Lab page.""" payload = {} if form_data := request.form.get("form_data"): with contextlib.suppress(json.JSONDecodeError): payload["requested_query"] = json.loads(form_data) return self.render_app_template(payload) + @expose("/p//", methods=["GET"]) + @has_access + @permission_name("read") + @event_logger.log_this + def permalink_view(self, permalink: str, **kwargs: Any) -> FlaskResponse: + """Handles permalinks for SQL Lab.""" + return self.root(permalink=permalink, **kwargs) + @expose("/history/", methods=("GET",)) @has_access @permission_name("read")