From 1d3a14e4e57105914899776082086ba4c2e4c033 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Tue, 31 Dec 2024 19:53:37 +0100 Subject: [PATCH 1/3] fixed case where url already have a query param --- cousinsmatter/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cousinsmatter/utils.py b/cousinsmatter/utils.py index 076bca6..26e372a 100644 --- a/cousinsmatter/utils.py +++ b/cousinsmatter/utils.py @@ -118,13 +118,15 @@ def get_page_data(self, page_num, group_by=None): return page @staticmethod - def get_page(request, object_list, page_num, reverse_link, compute_link=None, default_page_size=100, group_by=None): + def get_page(request, object_list, page_num, reverse_link=None, compute_link=None, default_page_size=100, group_by=None): page_size = int(request.GET["page_size"]) if "page_size" in request.GET else default_page_size ptor = Paginator(object_list, page_size, reverse_link=reverse_link, compute_link=compute_link) page_num = page_num or ptor.num_pages if page_num > ptor.num_pages: - raise PageOutOfBounds(ptor._get_link(ptor.num_pages) + '?' + urlencode({'page_size': page_size})) + url = ptor._get_link(ptor.num_pages) + url += ('&' if '?' in url else '?') + urlencode({'page_size': page_size}) + raise PageOutOfBounds(url) return ptor.get_page_data(page_num, group_by=group_by) From c673872197414b598fd98524c01a78ae6a4e4b09 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Tue, 31 Dec 2024 19:53:58 +0100 Subject: [PATCH 2/3] filter trove on category --- troves/templates/troves/trove_cave.html | 23 +++++++++++++++++++++++ troves/views.py | 13 ++++++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/troves/templates/troves/trove_cave.html b/troves/templates/troves/trove_cave.html index 1352689..ee6c3b8 100644 --- a/troves/templates/troves/trove_cave.html +++ b/troves/templates/troves/trove_cave.html @@ -22,6 +22,29 @@ {%icon "new-treasure" %} {{create_label}} +
+
+
+ + + {# Submit "select category" form automatically #} + +
+
+
{%paginate page%} diff --git a/troves/views.py b/troves/views.py index 3da4614..0f8320d 100644 --- a/troves/views.py +++ b/troves/views.py @@ -1,3 +1,4 @@ +from urllib.parse import urlencode from django.conf import settings from django.contrib.auth.decorators import login_required from django.http import JsonResponse @@ -12,14 +13,20 @@ @login_required def trove_cave(request, page=1): - treasures = Trove.objects.all().order_by('category', 'id') + category = request.GET.get('category') + if category and category in dict(Trove.CATEGORY_CHOICES).keys(): + treasures = Trove.objects.filter(category=category).order_by('id') + def compute_link(idx): return reverse('troves:page', args=[idx]) + '?' + urlencode({'category': category}) + else: + treasures = Trove.objects.all().order_by('category', 'id') + def compute_link(idx): return reverse('troves:page', args=[idx]) try: trove_page = Paginator.get_page(request, object_list=treasures, page_num=page, - reverse_link='troves:page', + compute_link=compute_link, default_page_size=settings.DEFAULT_TROVE_PAGE_SIZE, group_by='category') - return render(request, "troves/trove_cave.html", {"page": trove_page}) + return render(request, "troves/trove_cave.html", {"page": trove_page, 'trove_categories': Trove.CATEGORY_CHOICES}) except PageOutOfBounds as exc: return redirect(exc.redirect_to) From d19953c0aa5a2ec98a6874a56da5575fd55cece4 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Tue, 31 Dec 2024 20:13:42 +0100 Subject: [PATCH 3/3] removed parrallel testing that run into issue to often --- .github/workflows/build-and-publish-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-publish-image.yml b/.github/workflows/build-and-publish-image.yml index 4d321a3..c420fdf 100644 --- a/.github/workflows/build-and-publish-image.yml +++ b/.github/workflows/build-and-publish-image.yml @@ -102,7 +102,7 @@ jobs: - name: Test django (skip redis needing tests) run: | - python ./manage.py test --parallel --exclude-tag needs-redis + python ./manage.py test --exclude-tag needs-redis - name: Set up QEMU uses: docker/setup-qemu-action@v3