diff options
| author | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-11-23 18:23:15 +0100 |
|---|---|---|
| committer | Saptak Sengupta <saptak013@gmail.com> | 2025-11-27 15:07:12 +0530 |
| commit | b1a45b7e88942a6c7b9abc8d060fc34ef8ef5b9e (patch) | |
| tree | f7fc647bb64dcd4106ad66638954ba0a86b34ff3 /docs | |
| parent | d0a86e82aab168fec26e445f8235328aafaf460a (diff) | |
Preserved category filter between searches.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/templatetags/docs.py | 2 | ||||
| -rw-r--r-- | docs/tests/test_views.py | 25 | ||||
| -rw-r--r-- | docs/views.py | 4 |
3 files changed, 29 insertions, 2 deletions
diff --git a/docs/templatetags/docs.py b/docs/templatetags/docs.py index 012ca947..0f2157f3 100644 --- a/docs/templatetags/docs.py +++ b/docs/templatetags/docs.py @@ -34,6 +34,7 @@ def search_form(context): request = context["request"] lang = context.get("lang", settings.DEFAULT_LANGUAGE_CODE) + active_category = context.get("active_category", "") if "version" in context: release = DocumentRelease.objects.select_related( @@ -46,6 +47,7 @@ def search_form(context): "form": DocSearchForm(request.GET, release=release), "version": release.version, "lang": lang, + "active_category": active_category, } diff --git a/docs/tests/test_views.py b/docs/tests/test_views.py index d811ddfe..a759793b 100644 --- a/docs/tests/test_views.py +++ b/docs/tests/test_views.py @@ -164,6 +164,31 @@ class SearchFormTestCase(TestCase): html=True, ) + def test_search_category_filter_preserved(self): + response = self.client.get( + "/en/5.1/search/?q=potato&category=ref", + headers={"host": "docs.djangoproject.localhost:8000"}, + ) + self.assertEqual(response.status_code, 200) + self.assertContains( + response, '<input type="hidden" name="category" value="ref">' + ) + self.assertContains( + response, f"{self.active_filter}API Reference</a>", html=True + ) + response = self.client.post( + "/en/5.1/search/?q=potato&category=ref", + headers={"host": "docs.djangoproject.localhost:8000"}, + data={"category": "ref", "q": "fish"}, + ) + self.assertEqual(response.status_code, 200) + self.assertContains( + response, '<input type="hidden" name="category" value="ref">' + ) + self.assertContains( + response, f"{self.active_filter}API Reference</a>", html=True + ) + def test_code_links(self): queryset_data = { "metadata": { diff --git a/docs/views.py b/docs/views.py index e7fdc2f9..03c53cf4 100644 --- a/docs/views.py +++ b/docs/views.py @@ -144,6 +144,7 @@ def search_results(request, lang, version, per_page=10, orphans=3): activate(lang) + doc_category = DocumentationCategory.parse(request.GET.get("category")) form = DocSearchForm(request.GET or None, release=release) # Get available languages for the language switcher @@ -158,6 +159,7 @@ def search_results(request, lang, version, per_page=10, orphans=3): "release": release, "available_languages": available_languages, "searchparams": request.GET.urlencode(), + "active_category": doc_category or "", } if form.is_valid(): @@ -169,7 +171,6 @@ def search_results(request, lang, version, per_page=10, orphans=3): if exact is not None: return redirect(exact) - doc_category = DocumentationCategory.parse(request.GET.get("category")) results = Document.objects.search( q, release, document_category=doc_category ) @@ -201,7 +202,6 @@ def search_results(request, lang, version, per_page=10, orphans=3): "page": page, "paginator": paginator, "start_sel": START_SEL, - "active_category": doc_category, "DocumentationCategory": DocumentationCategory, } ) |
