summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2025-11-23 18:23:15 +0100
committerSaptak Sengupta <saptak013@gmail.com>2025-11-27 15:07:12 +0530
commitb1a45b7e88942a6c7b9abc8d060fc34ef8ef5b9e (patch)
treef7fc647bb64dcd4106ad66638954ba0a86b34ff3 /docs
parentd0a86e82aab168fec26e445f8235328aafaf460a (diff)
Preserved category filter between searches.
Diffstat (limited to 'docs')
-rw-r--r--docs/templatetags/docs.py2
-rw-r--r--docs/tests/test_views.py25
-rw-r--r--docs/views.py4
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,
}
)