From ef3eacf622e69723d48ab1ad597645770a7361db Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Thu, 23 Nov 2017 12:32:54 -0800 Subject: [PATCH] Select option for removing filters --- datasette/app.py | 10 +++++++--- datasette/templates/table.html | 1 + datasette/utils.py | 34 +++++++++++++++++++--------------- tests/test_app.py | 20 +++++++++++++++++--- 4 files changed, 44 insertions(+), 21 deletions(-) diff --git a/datasette/app.py b/datasette/app.py index e4475a85..3e2cf42a 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -58,8 +58,8 @@ class BaseView(HTTPMethodView): r.headers['Access-Control-Allow-Origin'] = '*' return r - def redirect(self, request, path): - if request.query_string and '?' not in path: + def redirect(self, request, path, forward_querystring=True): + if request.query_string and '?' not in path and forward_querystring: path = '{}?{}'.format( path, request.query_string ) @@ -435,7 +435,11 @@ class TableView(BaseView): # Handle ?_filter_column and redirect, if present redirect_params = filters_should_redirect(special_args) if redirect_params: - return self.redirect(request, path_with_added_args(request, redirect_params)) + return self.redirect( + request, + path_with_added_args(request, redirect_params), + forward_querystring=False + ) filters = Filters(sorted(other_args.items())) where_clauses, params = filters.build_where_clauses() diff --git a/datasette/templates/table.html b/datasette/templates/table.html index 70860fce..06a6c71f 100644 --- a/datasette/templates/table.html +++ b/datasette/templates/table.html @@ -34,6 +34,7 @@