diff --git a/config/urls.py b/config/urls.py index d96475f2..9faa268f 100755 --- a/config/urls.py +++ b/config/urls.py @@ -142,21 +142,21 @@ urlpatterns = [ path("contact/", ContactView.as_view(), name="contact"), # Boost versions views path( - "versions//libraries/", + "versions//libraries/", LibraryByVersion.as_view(), name="libraries-by-version", ), path( - "versions///", + "versions///", LibraryByVersionDetail.as_view(), name="libraries-by-version-detail", ), path( - "versions//libraries-by-category//", + "versions//libraries-by-category//", LibraryVersionByCategory.as_view(), name="libraries-by-version-by-category", ), - path("versions//", VersionDetail.as_view(), name="version-detail"), + path("versions//", VersionDetail.as_view(), name="version-detail"), path("versions/", VersionList.as_view(), name="version-list"), # Markdown content re_path( diff --git a/libraries/tests/test_views.py b/libraries/tests/test_views.py index 73c0b4a6..9be9d273 100644 --- a/libraries/tests/test_views.py +++ b/libraries/tests/test_views.py @@ -7,7 +7,7 @@ def test_library_list(version, tp): """GET /libraries/""" res = tp.get("libraries") tp.response_302(res) - assert res.url == f"/versions/{version.pk}/libraries/" + assert res.url == f"/versions/{version.slug}/libraries/" @pytest.mark.xfail( @@ -26,7 +26,7 @@ def test_library_list_by_category(library_version, category, tp): library.categories.add(category) res = tp.get("libraries-by-category", category.slug) tp.response_302(res) - assert res.url == f"/versions/{version.pk}/libraries-by-category/{category.slug}/" + assert res.url == f"/versions/{version.slug}/libraries-by-category/{category.slug}/" def test_libraries_by_version_by_category(tp, library_version, category): @@ -36,7 +36,7 @@ def test_libraries_by_version_by_category(tp, library_version, category): baker.make("libraries.Library", name="Sample") library.categories.add(category) - res = tp.get("libraries-by-version-by-category", version.pk, category.slug) + res = tp.get("libraries-by-version-by-category", version.slug, category.slug) tp.response_200(res) assert "library_list" in res.context assert len(res.context["library_list"]) == 1 @@ -49,7 +49,7 @@ def test_libraries_by_version_detail(tp, library_version): """GET /versions/{version_slug}/{slug}/""" res = tp.get( "libraries-by-version-detail", - library_version.version.pk, + library_version.version.slug, library_version.library.slug, ) tp.response_200(res) @@ -60,7 +60,7 @@ def test_libraries_by_version_detail_no_library_found(tp, library_version): """GET /versions/{version_slug}/{slug}/""" res = tp.get( "libraries-by-version-detail", - library_version.version.pk, + library_version.version.slug, "coffee", ) tp.response_404(res) @@ -80,7 +80,7 @@ def test_libraries_by_version_list(tp, library_version): """GET /versions/{version_slug}/libraries/""" # Create a new library_version excluded_library = baker.make("libraries.Library", name="Sample") - res = tp.get("libraries-by-version", library_version.version.pk) + res = tp.get("libraries-by-version", library_version.version.slug) tp.response_200(res) assert "library_list" in res.context @@ -103,7 +103,7 @@ def test_library_detail_context_get_closed_prs_count(tp, library_version): baker.make("libraries.PullRequest", library=library, is_open=True) baker.make("libraries.PullRequest", library=library, is_open=False) baker.make("libraries.PullRequest", library=lib2, is_open=True) - url = tp.reverse("libraries-by-version-detail", version.pk, library.slug) + url = tp.reverse("libraries-by-version-detail", version.slug, library.slug) response = tp.get(url) tp.response_200(response) assert "closed_prs_count" in response.context @@ -124,7 +124,7 @@ def test_library_detail_context_get_open_issues_count(tp, library_version): baker.make("libraries.Issue", library=library, is_open=True) baker.make("libraries.Issue", library=library, is_open=False) baker.make("libraries.Issue", library=lib2, is_open=True) - url = tp.reverse("libraries-by-version-detail", version.pk, library.slug) + url = tp.reverse("libraries-by-version-detail", version.slug, library.slug) response = tp.get(url) tp.response_200(response) assert "open_issues_count" in response.context @@ -139,4 +139,4 @@ def test_library_detail(library_version, tp): url = tp.reverse("library-detail", library.slug) response = tp.get(url) tp.response_302(response) - assert response.url == f"/versions/{version.pk}/{library.slug}/" + assert response.url == f"/versions/{version.slug}/{library.slug}/" diff --git a/libraries/views.py b/libraries/views.py index 6a7492c1..5ad64a79 100644 --- a/libraries/views.py +++ b/libraries/views.py @@ -31,7 +31,7 @@ class LibraryList(RedirectView): def get_redirect_url(self, *args, **kwargs): version = Version.objects.most_recent() - return super().get_redirect_url(version_pk=version.pk) + return super().get_redirect_url(version_slug=version.slug) class LibraryByVersion(CategoryMixin, FormMixin, ListView): @@ -46,8 +46,10 @@ class LibraryByVersion(CategoryMixin, FormMixin, ListView): def get_queryset(self): queryset = super().get_queryset() - version_pk = self.kwargs.get("version_pk") - return super().get_queryset().filter(library_version__version__pk=version_pk) + version_slug = self.kwargs.get("version_slug") + return ( + super().get_queryset().filter(library_version__version__slug=version_slug) + ) def post(self, request): """User has submitted a form and will be redirected to the right results""" @@ -67,11 +69,11 @@ class LibraryByVersionDetail(CategoryMixin, DetailView): template_name = "libraries/detail.html" def get_object(self): - version_pk = self.kwargs.get("version_pk") + version_slug = self.kwargs.get("version_slug") slug = self.kwargs.get("slug") if not LibraryVersion.objects.filter( - version__pk=version_pk, library__slug=slug + version__slug=version_slug, library__slug=slug ).exists(): raise Http404("No library found matching the query") @@ -96,10 +98,10 @@ class LibraryByVersionDetail(CategoryMixin, DetailView): return Issue.objects.filter(library=obj, is_open=True).count() def get_version(self): - version_pk = self.kwargs.get("version_pk") - if version_pk: + version_slug = self.kwargs.get("version_slug") + if version_slug: try: - return Version.objects.get(pk=version_pk) + return Version.objects.get(slug=version_slug) except Version.DoesNotExist: logger.info("libraries_by_version_detail_view_version_not_found") raise Http404("No object found matching the query") @@ -133,7 +135,9 @@ class LibraryByCategory(RedirectView): def get_redirect_url(self, *args, **kwargs): category_slug = self.kwargs.get("category") version = Version.objects.most_recent() - return super().get_redirect_url(version_pk=version.pk, category=category_slug) + return super().get_redirect_url( + version_slug=version.slug, category=category_slug + ) class LibraryVersionByCategory(CategoryMixin, ListView): @@ -145,10 +149,10 @@ class LibraryVersionByCategory(CategoryMixin, ListView): def get_context_data(self, **kwargs): context = super().get_context_data() category_slug = self.kwargs.get("category") - version_pk = self.kwargs.get("version_pk") + version_slug = self.kwargs.get("version_slug") try: - version = Version.objects.get(pk=version_pk) + version = Version.objects.get(slug=version_slug) context["version"] = version except Version.DoesNotExist: raise Http404("No library found matching the query") @@ -163,13 +167,13 @@ class LibraryVersionByCategory(CategoryMixin, ListView): def get_queryset(self): category = self.kwargs.get("category") - version_pk = self.kwargs.get("version_pk") + version_slug = self.kwargs.get("version_slug") return ( Library.objects.prefetch_related("categories") .filter( categories__slug=category, - versions__library_version__version__pk=version_pk, + versions__library_version__version__slug=version_slug, ) .order_by("name") .distinct() @@ -187,6 +191,5 @@ class LibraryDetail(RedirectView): pattern_name = "libraries-by-version-detail" def get_redirect_url(self, *args, **kwargs): - # library = get_object_or_404(Library, slug=kwargs['slug']) version = Version.objects.most_recent() - return super().get_redirect_url(version_pk=version.pk, slug=kwargs["slug"]) + return super().get_redirect_url(version_slug=version.slug, slug=kwargs["slug"]) diff --git a/versions/tests/test_views.py b/versions/tests/test_views.py index 3058608b..0a7c7f78 100644 --- a/versions/tests/test_views.py +++ b/versions/tests/test_views.py @@ -22,7 +22,7 @@ def test_version_list_context(version, old_version, inactive_version, tp): def test_version_detail(version, tp): """ - GET /versions/{pk}/ + GET /versions/{slug}/ """ - res = tp.get("version-detail", pk=version.pk) + res = tp.get("version-detail", slug=version.slug) tp.response_200(res)