From 8ccc45b0e6a90ac6dc89127e1dd663a2a45e11e1 Mon Sep 17 00:00:00 2001 From: David Larlet Date: Fri, 5 May 2023 23:16:19 -0400 Subject: [PATCH] Check both matching pk and slug for map urls Fix #905 --- umap/tests/test_map_views.py | 14 +------------- umap/views.py | 2 ++ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/umap/tests/test_map_views.py b/umap/tests/test_map_views.py index 23b06f2a..67be7400 100644 --- a/umap/tests/test_map_views.py +++ b/umap/tests/test_map_views.py @@ -122,20 +122,8 @@ def test_delete(client, map, datalayer): def test_wrong_slug_should_redirect_to_canonical(client, map): url = reverse("map", kwargs={"pk": map.pk, "slug": "wrong-slug"}) - canonical = reverse("map", kwargs={"pk": map.pk, "slug": map.slug}) response = client.get(url) - assert response.status_code == 301 - assert response["Location"] == canonical - - -def test_wrong_slug_should_redirect_with_query_string(client, map): - url = reverse("map", kwargs={"pk": map.pk, "slug": "wrong-slug"}) - url = "{}?allowEdit=0".format(url) - canonical = reverse("map", kwargs={"pk": map.pk, "slug": map.slug}) - canonical = "{}?allowEdit=0".format(canonical) - response = client.get(url) - assert response.status_code == 301 - assert response["Location"] == canonical + assert response.status_code == 404 def test_should_not_consider_the_query_string_for_canonical_check(client, map): diff --git a/umap/views.py b/umap/views.py index bc8cc3c9..d91a4bc5 100644 --- a/umap/views.py +++ b/umap/views.py @@ -451,6 +451,8 @@ class PermissionsMixin: class MapView(MapDetailMixin, PermissionsMixin, DetailView): + query_pk_and_slug = True + def get(self, request, *args, **kwargs): self.object = self.get_object() canonical = self.get_canonical_url()