From 1558ab79898469918d03b4e17480f9ff0817fc9e Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sat, 30 May 2026 22:46:45 -0700 Subject: [PATCH] Fix remaining base_url issues --- datasette/app.py | 17 +++--- datasette/templates/api_explorer.html | 4 +- datasette/templates/patterns.html | 84 +++++++++++++-------------- datasette/views/database.py | 6 +- datasette/views/special.py | 5 +- tests/test_html.py | 25 +++++++- 6 files changed, 85 insertions(+), 56 deletions(-) diff --git a/datasette/app.py b/datasette/app.py index e7f34e69..8b8b601f 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -2870,19 +2870,22 @@ def wrap_view_function(view_fn, datasette): def permanent_redirect(path, forward_query_string=False, forward_rest=False): - return wrap_view( - lambda request, send: Response.redirect( + def view(request, send): + redirect_path = ( path + (request.url_vars["rest"] if forward_rest else "") + ( ("?" + request.query_string) if forward_query_string and request.query_string else "" - ), - status=301, - ), - datasette=None, - ) + ) + ) + route_path = request.scope.get("route_path") + if route_path and request.path.endswith(route_path): + redirect_path = request.path[: -len(route_path)] + redirect_path + return Response.redirect(redirect_path, status=301) + + return wrap_view(view, datasette=None) _curly_re = re.compile(r"({.*?})") diff --git a/datasette/templates/api_explorer.html b/datasette/templates/api_explorer.html index dc393c20..58e2a88c 100644 --- a/datasette/templates/api_explorer.html +++ b/datasette/templates/api_explorer.html @@ -19,7 +19,7 @@

GET -
+
@@ -29,7 +29,7 @@
POST - +
diff --git a/datasette/templates/patterns.html b/datasette/templates/patterns.html index 7770f7d4..a46478a7 100644 --- a/datasette/templates/patterns.html +++ b/datasette/templates/patterns.html @@ -11,7 +11,7 @@