From b50bf5d13fed10d0b930f62198d8f2658e15e1eb Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Wed, 13 Oct 2021 14:08:06 -0700 Subject: [PATCH] Don't persist _next in hidden field, closes #1483 --- datasette/views/table.py | 2 +- tests/test_html.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/datasette/views/table.py b/datasette/views/table.py index e8c66d3c..efcef4d2 100644 --- a/datasette/views/table.py +++ b/datasette/views/table.py @@ -889,7 +889,7 @@ class TableView(RowTableShared): form_hidden_args = [] for key in request.args: - if key.startswith("_") and key not in ("_sort", "_search"): + if key.startswith("_") and key not in ("_sort", "_search", "_next"): for value in request.args.getlist(key): form_hidden_args.append((key, value)) diff --git a/tests/test_html.py b/tests/test_html.py index c22d87da..151ac5c3 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -563,6 +563,16 @@ def test_facets_persist_through_filter_form(app_client): ] +def test_next_does_not_persist_in_hidden_field(app_client): + response = app_client.get("/fixtures/searchable?_size=1&_next=1") + assert response.status == 200 + inputs = Soup(response.body, "html.parser").find("form").findAll("input") + hiddens = [i for i in inputs if i["type"] == "hidden"] + assert [(hidden["name"], hidden["value"]) for hidden in hiddens] == [ + ("_size", "1"), + ] + + @pytest.mark.parametrize( "path,expected_classes", [