mirror of
https://github.com/boostorg/website-v2.git
synced 2026-02-27 05:32:08 +00:00
📝 Change URLs to use version slug and not PK
This commit is contained in:
@@ -142,21 +142,21 @@ urlpatterns = [
|
||||
path("contact/", ContactView.as_view(), name="contact"),
|
||||
# Boost versions views
|
||||
path(
|
||||
"versions/<int:version_pk>/libraries/",
|
||||
"versions/<slug:version_slug>/libraries/",
|
||||
LibraryByVersion.as_view(),
|
||||
name="libraries-by-version",
|
||||
),
|
||||
path(
|
||||
"versions/<int:version_pk>/<slug:slug>/",
|
||||
"versions/<slug:version_slug>/<slug:slug>/",
|
||||
LibraryByVersionDetail.as_view(),
|
||||
name="libraries-by-version-detail",
|
||||
),
|
||||
path(
|
||||
"versions/<int:version_pk>/libraries-by-category/<slug:category>/",
|
||||
"versions/<slug:version_slug>/libraries-by-category/<slug:category>/",
|
||||
LibraryVersionByCategory.as_view(),
|
||||
name="libraries-by-version-by-category",
|
||||
),
|
||||
path("versions/<int:pk>/", VersionDetail.as_view(), name="version-detail"),
|
||||
path("versions/<slug:slug>/", VersionDetail.as_view(), name="version-detail"),
|
||||
path("versions/", VersionList.as_view(), name="version-list"),
|
||||
# Markdown content
|
||||
re_path(
|
||||
|
||||
@@ -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}/"
|
||||
|
||||
@@ -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"])
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user