From a69130656977294d74ca012154d850ea0b8310c4 Mon Sep 17 00:00:00 2001 From: Lacey Williams Henschel Date: Tue, 23 May 2023 16:09:23 -0700 Subject: [PATCH] :sparkles: Add mini versions of library list pages --- config/urls.py | 8 ++++++++ libraries/tests/test_views.py | 22 ++++++++++++++++++---- libraries/views.py | 12 ++++++++++++ 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/config/urls.py b/config/urls.py index 1b18b858..688cf9b7 100755 --- a/config/urls.py +++ b/config/urls.py @@ -25,7 +25,9 @@ from ak.views import ( from core.views import MarkdownTemplateView, StaticContentTemplateView from libraries.views import ( LibraryList, + LibraryListMini, LibraryListByCategory, + LibraryListByCategoryMini, LibraryDetail, ) from libraries.api import LibrarySearchView @@ -95,11 +97,17 @@ urlpatterns = ( TemplateView.as_view(template_name="donate/donate.html"), name="donate", ), + path( + "libraries/by-category/mini/", + LibraryListByCategoryMini.as_view(), + name="libraries-by-category-mini", + ), path( "libraries/by-category/", LibraryListByCategory.as_view(), name="libraries-by-category", ), + path("libraries/mini/", LibraryListMini.as_view(), name="libraries-mini"), path("libraries/", LibraryList.as_view(), name="libraries"), path( "libraries//", diff --git a/libraries/tests/test_views.py b/libraries/tests/test_views.py index fd2e1bb4..e028dcef 100644 --- a/libraries/tests/test_views.py +++ b/libraries/tests/test_views.py @@ -3,7 +3,7 @@ import datetime from model_bakery import baker -def test_library_list(library_version, tp): +def test_library_list(library_version, tp, url_name="libraries"): """GET /libraries/""" last_year = datetime.date.today() - datetime.timedelta(days=365) v2 = baker.make("versions.Version", name="Version 1.78.0", release_date=last_year) @@ -12,13 +12,18 @@ def test_library_list(library_version, tp): name="sample", ) baker.make("libraries.LibraryVersion", library=lib2, version=v2) - res = tp.get("libraries") + res = tp.get(url_name) tp.response_200(res) assert "library_list" in res.context assert library_version.library in res.context["library_list"] assert lib2 not in res.context["library_list"] +def test_library_list_mini(library_version, tp): + """GET /libraries/mini/""" + test_library_list(library_version, tp, url_name="libraries-mini") + + def test_library_list_no_pagination(library_version, tp): """Library list is not paginated.""" libs = [ @@ -64,16 +69,25 @@ def test_library_list_select_version(library_version, tp): assert new_lib_version.library not in res.context["library_list"] -def test_library_list_by_category(library_version, category, tp): +def test_library_list_by_category( + library_version, category, tp, url="libraries-by-category" +): """GET /libraries/by-category/""" library_version.library.categories.add(category) - res = tp.get("libraries-by-category") + res = tp.get(url) tp.response_200(res) assert "library_list" in res.context assert "category" in res.context["library_list"][0] assert "libraries" in res.context["library_list"][0] +def test_library_list_by_category_mini(library_version, category, tp): + """GET /libraries/by-category/mini/""" + test_library_list_by_category( + library_version, category, tp, url="libraries-by-category-mini" + ) + + def test_library_detail(library_version, tp): """GET /libraries/{slug}/""" library = library_version.library diff --git a/libraries/views.py b/libraries/views.py index 1b5dc773..a103434b 100644 --- a/libraries/views.py +++ b/libraries/views.py @@ -59,6 +59,12 @@ class LibraryList(CategoryMixin, ListView): return context +class LibraryListMini(LibraryList): + """Flat list version of LibraryList""" + + template_name = "libraries/list.html" + + class LibraryListByCategory(LibraryList): """List all Boost libraries sorted by Category.""" @@ -83,6 +89,12 @@ class LibraryListByCategory(LibraryList): return results_by_category +class LibraryListByCategoryMini(LibraryListByCategory): + """Flat list version of LibraryListByCategory""" + + template_name = "libraries/list.html" + + class LibraryDetail(CategoryMixin, FormMixin, DetailView): """Display a single Library in insolation"""