From 9507ddca568189edea69bd78d94e50c4ba7f9089 Mon Sep 17 00:00:00 2001 From: Lacey Williams Henschel Date: Wed, 8 Feb 2023 14:21:58 -0800 Subject: [PATCH] :wrench: Have LibraryList view load directly instead of redirect --- libraries/tests/test_views.py | 3 +-- libraries/views.py | 33 +++++++++++++++++++++++---------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/libraries/tests/test_views.py b/libraries/tests/test_views.py index 9be9d273..dd3aca9e 100644 --- a/libraries/tests/test_views.py +++ b/libraries/tests/test_views.py @@ -6,8 +6,7 @@ from model_bakery import baker def test_library_list(version, tp): """GET /libraries/""" res = tp.get("libraries") - tp.response_302(res) - assert res.url == f"/versions/{version.slug}/libraries/" + tp.response_200(res) @pytest.mark.xfail( diff --git a/libraries/views.py b/libraries/views.py index 5ad64a79..1ec40cec 100644 --- a/libraries/views.py +++ b/libraries/views.py @@ -19,19 +19,32 @@ class CategoryMixin: return context -class LibraryList(RedirectView): - """ - Redirect a request for the list of libraries to the list of libraries - for the most recent version of Boost - """ +class LibraryList(CategoryMixin, FormMixin, ListView): + """List all of our libraries by name""" - permanent = False - query_string = True - pattern_name = "libraries-by-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_redirect_url(self, *args, **kwargs): + def get_queryset(self): + queryset = super().get_queryset() version = Version.objects.most_recent() - return super().get_redirect_url(version_slug=version.slug) + return ( + super().get_queryset().filter(library_version__version=version).distinct() + ) + + def post(self, request): + """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-category", category=category.slug) + else: + logger.info("library_list_invalid_category") + return super().get(request) class LibraryByVersion(CategoryMixin, FormMixin, ListView):