From 1d0522ea2d9197b1c4e9a051b829a8bfadf40115 Mon Sep 17 00:00:00 2001 From: Matthew Lemon Date: Sun, 1 Sep 2024 20:15:55 +0100 Subject: Added pagination to the resource list page --- pyblackbird_cc/resources/views.py | 6 ++- .../templates/resources/resource_list.html | 48 ++++++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) (limited to 'pyblackbird_cc') diff --git a/pyblackbird_cc/resources/views.py b/pyblackbird_cc/resources/views.py index eecb7cd..04c8b2b 100644 --- a/pyblackbird_cc/resources/views.py +++ b/pyblackbird_cc/resources/views.py @@ -7,6 +7,7 @@ from dataclasses import dataclass from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required +from django.core.paginator import Paginator from django.db import IntegrityError from django.db import transaction from django.shortcuts import get_object_or_404 @@ -118,9 +119,12 @@ def _extract_metadata_from_resource(resource_obj) -> ResourceInfo | None: def index(request): resource_objs = Resource.objects.all() resource_list = [_extract_metadata_from_resource(r) for r in resource_objs] + paginator = Paginator(resource_list, 20) + page_number = request.GET.get('page') + page_obj = paginator.get_page(page_number) featured_resources = [r for r in resource_list if r.feature_slot] featured_resources = sorted(featured_resources, key=lambda resource: resource.feature_slot) - context = {"resource_list": resource_list, "featured_resources": featured_resources} + context = {"page_obj": page_obj, "resource_list": resource_list, "featured_resources": featured_resources} return render(request, "resources/resource_list.html", context) diff --git a/pyblackbird_cc/templates/resources/resource_list.html b/pyblackbird_cc/templates/resources/resource_list.html index cfe5ba3..2ef0d48 100644 --- a/pyblackbird_cc/templates/resources/resource_list.html +++ b/pyblackbird_cc/templates/resources/resource_list.html @@ -7,7 +7,7 @@ {% block content %}
- {% include "resources/admin_bar.html" %} + {% include "resources/admin_bar.html" %}
{# featured resources #} @@ -34,7 +34,7 @@ {% endif %} {# standard resources #} -{% if resource_list %} +{% if page_obj.object_list %}
Standard resources
@@ -42,10 +42,52 @@
- {% for resource in resource_list %} + {% for resource in page_obj.object_list %} {% include "resources/resource_card_standard.html" with resource=resource %} {% endfor %}
+ + {% if page_obj.has_other_pages %} +
+
+ +
+
+ {% endif %} {% else %}

There are no resources

{% endif %} -- cgit v1.2.3