mirror of
https://github.com/boostorg/website-v2.git
synced 2026-02-27 17:42:08 +00:00
🔧 Refactoring and misc cleanup
This commit is contained in:
@@ -137,6 +137,7 @@ def test_library_detail_context_get_open_issues_count(tp, library_version):
|
||||
# Verify that the count only includes the one open issue for this library
|
||||
assert response.context["open_issues_count"] == 1
|
||||
|
||||
|
||||
def test_library_list_by_category(library_version, category, tp):
|
||||
"""GET /libraries-by-category/{category_slug}/"""
|
||||
library = library_version.library
|
||||
@@ -184,7 +185,7 @@ def test_libraries_by_version_list(tp, library_version):
|
||||
def test_libraries_by_version_detail(tp, library_version):
|
||||
"""GET /versions/{version_slug}/{slug}/"""
|
||||
res = tp.get(
|
||||
"libraries-by-version-detail",
|
||||
"libraries-detail-by-version",
|
||||
library_version.version.slug,
|
||||
library_version.library.slug,
|
||||
)
|
||||
@@ -195,7 +196,7 @@ def test_libraries_by_version_detail(tp, library_version):
|
||||
def test_libraries_by_version_detail_no_library_found(tp, library_version):
|
||||
"""GET /versions/{version_slug}/{slug}/"""
|
||||
res = tp.get(
|
||||
"libraries-by-version-detail",
|
||||
"libraries-detail-by-version",
|
||||
library_version.version.slug,
|
||||
"coffee",
|
||||
)
|
||||
@@ -205,7 +206,7 @@ def test_libraries_by_version_detail_no_library_found(tp, library_version):
|
||||
def test_libraries_by_version_detail_no_version_found(tp, library_version):
|
||||
"""GET /versions/{version_slug}/{slug}/"""
|
||||
res = tp.get(
|
||||
"libraries-by-version-detail",
|
||||
"libraries-detail-by-version",
|
||||
0000,
|
||||
library_version.library.slug,
|
||||
)
|
||||
@@ -216,36 +217,13 @@ def test_libraries_by_version_list_select_category(library_version, category, tp
|
||||
"""POST versions/{version_slug}/libraries/ to submit a category redirects to the libraries-by-category page"""
|
||||
library = library_version.library
|
||||
version = library_version.version
|
||||
url = tp.reverse("libraries-by-version", version_slug=version.slug)
|
||||
url = tp.reverse("libraries-by-version", version.slug)
|
||||
res = tp.post(url, data={"categories": category.pk})
|
||||
tp.response_302(res)
|
||||
# breakpoint()
|
||||
assert res.url == f"/versions/{version.slug}/libraries-by-category/{category.slug}/"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def test_libraries_by_version_by_category(tp, library_version, category):
|
||||
"""GET /versions/{version_slug}/libraries-by-category/{slug}/"""
|
||||
library = library_version.library
|
||||
|
||||
@@ -151,11 +151,9 @@ class LibraryListByVersion(CategoryMixin, GetVersionNameMixin, FormMixin, ListVi
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context["version_slug"] = self.kwargs.get("version_slug")
|
||||
context["version_slug"] = self.kwargs.get("slug")
|
||||
context["version_name"] = self.get_version_name(context["version_slug"])
|
||||
context[
|
||||
"form_action"
|
||||
] = f"/versions/{self.kwargs.get('version_slug')}/libraries/"
|
||||
context["form_action"] = f"/versions/{self.kwargs.get('slug')}/libraries/"
|
||||
return context
|
||||
|
||||
def get_queryset(self):
|
||||
@@ -172,7 +170,7 @@ class LibraryListByVersion(CategoryMixin, GetVersionNameMixin, FormMixin, ListVi
|
||||
category = form.cleaned_data["categories"][0]
|
||||
return redirect(
|
||||
"libraries-by-version-by-category",
|
||||
version_slug=self.kwargs.get("version_slug"),
|
||||
version_slug=self.kwargs.get("slug"),
|
||||
category=category.slug,
|
||||
)
|
||||
else:
|
||||
@@ -194,7 +192,6 @@ class LibraryDetailByVersion(CategoryMixin, DetailView):
|
||||
version__slug=version_slug, library__slug=slug
|
||||
).exists():
|
||||
raise Http404("No library found matching the query")
|
||||
|
||||
try:
|
||||
obj = self.get_queryset().get(slug=slug)
|
||||
except self.model.DoesNotExist:
|
||||
@@ -206,9 +203,9 @@ class LibraryDetailByVersion(CategoryMixin, DetailView):
|
||||
context = self.get_context_data(object=self.object)
|
||||
context["closed_prs_count"] = self.get_closed_prs_count(self.object)
|
||||
context["open_issues_count"] = self.get_open_issues_count(self.object)
|
||||
context["version"] = self.get_version()
|
||||
context["version_slug"] = self.kwargs.get("version_slug")
|
||||
context["version"] = self.get_version(self.kwargs.get("version_slug"))
|
||||
context["version_name"] = context["version"].name
|
||||
context["version_slug"] = context["version"].slug
|
||||
return self.render_to_response(context)
|
||||
|
||||
def get_closed_prs_count(self, obj):
|
||||
@@ -217,8 +214,7 @@ class LibraryDetailByVersion(CategoryMixin, DetailView):
|
||||
def get_open_issues_count(self, obj):
|
||||
return Issue.objects.filter(library=obj, is_open=True).count()
|
||||
|
||||
def get_version(self):
|
||||
version_slug = self.kwargs.get("version_slug")
|
||||
def get_version(self, version_slug):
|
||||
try:
|
||||
return Version.objects.get(slug=version_slug)
|
||||
except Version.DoesNotExist:
|
||||
@@ -226,23 +222,28 @@ class LibraryDetailByVersion(CategoryMixin, DetailView):
|
||||
raise Http404("No object found matching the query")
|
||||
|
||||
|
||||
class LibraryListByVersionByCategory(CategoryMixin, GetVersionNameMixin, FormMixin, ListView):
|
||||
class LibraryListByVersionByCategory(CategoryMixin, FormMixin, ListView):
|
||||
"""List all of our libraries in a certain category for a certain Boost version"""
|
||||
|
||||
form_class = LibraryForm
|
||||
paginate_by = 25
|
||||
queryset = (
|
||||
Library.objects.prefetch_related("authors", "categories").all().order_by("name")
|
||||
)
|
||||
template_name = "libraries/list.html"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data()
|
||||
category_slug = self.kwargs.get("category")
|
||||
version_slug = self.kwargs.get("version_slug")
|
||||
context["form_action"] = f"/versions/{self.kwargs.get('version_slug')}/libraries/"
|
||||
context[
|
||||
"form_action"
|
||||
] = f"/versions/{self.kwargs.get('version_slug')}/libraries/"
|
||||
|
||||
try:
|
||||
version = Version.objects.get(slug=version_slug)
|
||||
context["version_slug"] = version_slug
|
||||
context["version_name"] = self.get_version_name(version_slug)
|
||||
# context["version_name"] = self.get_version_name(version_slug)
|
||||
context["version"] = version
|
||||
except Version.DoesNotExist:
|
||||
raise Http404("No library found matching the query")
|
||||
@@ -255,16 +256,31 @@ class LibraryListByVersionByCategory(CategoryMixin, GetVersionNameMixin, FormMix
|
||||
logger.info("libraries_by_category_view_category_not_found")
|
||||
return context
|
||||
|
||||
def get_queryset(self):
|
||||
def get_queryset(self, **kwargs):
|
||||
category = self.kwargs.get("category")
|
||||
version_slug = self.kwargs.get("version_slug")
|
||||
|
||||
return (
|
||||
Library.objects.prefetch_related("categories")
|
||||
qs = (
|
||||
super()
|
||||
.get_queryset()
|
||||
.filter(
|
||||
categories__slug=category,
|
||||
versions__library_version__version__slug=version_slug,
|
||||
)
|
||||
.order_by("name")
|
||||
.distinct()
|
||||
)
|
||||
)
|
||||
|
||||
return qs
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
"""User has submitted a form and will be redirected to the right results"""
|
||||
form = self.get_form()
|
||||
if form.is_valid():
|
||||
category = form.cleaned_data["categories"][0]
|
||||
return redirect(
|
||||
"libraries-by-version-by-category",
|
||||
version_slug=self.kwargs.get("version_slug"),
|
||||
category=category.slug,
|
||||
)
|
||||
else:
|
||||
logger.info("library_list_invalid_category")
|
||||
return super().get(request)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<h3 class="text-2xl mb-3 capitalize">
|
||||
<a href="
|
||||
{% if version_slug %}
|
||||
{% url 'libraries-by-version-detail' version_slug=version_slug slug=library.slug %}
|
||||
{% url 'library-detail-by-version' version_slug=version_slug slug=library.slug %}
|
||||
{% else %}
|
||||
{% url 'library-detail' slug=library.slug %}
|
||||
{% endif %}"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
{% block content %}
|
||||
<!-- Breadcrumb used on filtered views -->
|
||||
<div class="p-3 md:p-0">
|
||||
<a class="text-orange" href="{% if version_slug %}{% url 'libraries-by-version' version_slug=version_slug %}{% else %}{% url 'libraries' %}{% endif %}">Libraries{% if version_name %} ({{ version.name }}){% endif %}</a> > <a class="text-orange" href="{% url 'libraries' %}">Specific</a> > <span class="capitalize">{{ object.name }}</span>
|
||||
<a class="text-orange" href="{% if version_slug %}{% url 'libraries-by-version' version_slug %}{% else %}{% url 'libraries' %}{% endif %}">Libraries{% if version_name %} ({{ version.name }}){% endif %}</a> > <a class="text-orange" href="{% url 'libraries' %}">Specific</a> > <span class="capitalize">{{ object.name }}</span>
|
||||
</div>
|
||||
<!-- end breadcrumb -->
|
||||
|
||||
|
||||
Reference in New Issue
Block a user