From 8bf6021d16ff0f6e9f845ed80112a1f2e3acafe7 Mon Sep 17 00:00:00 2001 From: Garrett Coakley Date: Sat, 2 Nov 2024 12:56:40 +0000 Subject: [PATCH 1/2] Replace `request.get_full_path()` with `request.path` for merge form action --- CHANGELOG.rst | 1 + taggit/admin.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 267d05af..dcc8b59e 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,6 +6,7 @@ Changelog * Add an admin command to remove orphaned tags * Remove support for Python 3.8 +* Replace `request.get_full_path()` with `request.path` for merge form action 6.1.0 (2024-09-29) ~~~~~~~~~~~~~~~~~~ diff --git a/taggit/admin.py b/taggit/admin.py index 7d0847bb..f27c7d2d 100644 --- a/taggit/admin.py +++ b/taggit/admin.py @@ -40,7 +40,7 @@ def render_tag_form(self, request, queryset): return redirect(request.get_full_path()) selected_tag_ids = ",".join(selected) - redirect_url = f"{request.get_full_path()}merge-tags/" + redirect_url = f"{request.path}merge-tags/" request.session["selected_tag_ids"] = selected_tag_ids From 9163b087d7ce926cdb07f338596c85d45fac0b17 Mon Sep 17 00:00:00 2001 From: Raphael Gaschignard Date: Mon, 4 Nov 2024 21:58:40 +1000 Subject: [PATCH 2/2] Test + just use reverse --- CHANGELOG.rst | 2 +- taggit/admin.py | 5 ++--- tests/test_admin.py | 1 + 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index dcc8b59e..20889d8c 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,7 +6,7 @@ Changelog * Add an admin command to remove orphaned tags * Remove support for Python 3.8 -* Replace `request.get_full_path()` with `request.path` for merge form action +* Fix an issue where the admin merge tag form redirect would fail when querystrings are present inside the URL 6.1.0 (2024-09-29) ~~~~~~~~~~~~~~~~~~ diff --git a/taggit/admin.py b/taggit/admin.py index f27c7d2d..0f975e89 100644 --- a/taggit/admin.py +++ b/taggit/admin.py @@ -39,12 +39,11 @@ def render_tag_form(self, request, queryset): self.message_user(request, "Please select at least one tag.") return redirect(request.get_full_path()) + # set the selected tags into the session, to be used later selected_tag_ids = ",".join(selected) - redirect_url = f"{request.path}merge-tags/" - request.session["selected_tag_ids"] = selected_tag_ids - return redirect(redirect_url) + return redirect("admin:taggit_tag_merge_tags") def merge_tags_view(self, request): selected_tag_ids = request.session.get("selected_tag_ids", "").split(",") diff --git a/tests/test_admin.py b/tests/test_admin.py index d36a6249..4daa3044 100644 --- a/tests/test_admin.py +++ b/tests/test_admin.py @@ -59,6 +59,7 @@ def test_tag_merging(self): ) # we're redirecting self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, reverse("admin:taggit_tag_merge_tags")) # make sure what we expected got into the session keys assert "selected_tag_ids" in self.client.session.keys() self.assertEqual(