From b984422471fb224e4471f624cd860e88f52186c8 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 8 Oct 2018 11:51:21 +0000 Subject: [PATCH] Added pagination to the nomcom pending-feedback page, to reduce load time. - Legacy-Id: 15534 --- ietf/nomcom/views.py | 16 ++++++++++---- .../nomcom/view_feedback_pending.html | 22 +++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/ietf/nomcom/views.py b/ietf/nomcom/views.py index 3a46fef7a..2c47b8235 100644 --- a/ietf/nomcom/views.py +++ b/ietf/nomcom/views.py @@ -6,6 +6,7 @@ from django.conf import settings from django.contrib.auth.decorators import login_required from django.contrib.auth.models import AnonymousUser from django.contrib import messages +from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.urls import reverse from django.http import Http404, HttpResponseRedirect, HttpResponseForbidden from django.shortcuts import render, get_object_or_404, redirect @@ -789,9 +790,15 @@ def view_feedback_pending(request, year): FeedbackFormSet = modelformset_factory(Feedback, form=PendingFeedbackForm, extra=0) - feedbacks = Feedback.objects.filter(type__isnull=True, nomcom=nomcom) - - + feedback_list = Feedback.objects.filter(type__isnull=True, nomcom=nomcom).order_by('-time') + paginator = Paginator(feedback_list, 20) + page_num = request.GET.get('page') + try: + feedback_page = paginator.page(page_num) + except PageNotAnInteger: + feedback_page = paginator.page(1) + except EmptyPage: + feedback_page = paginator.page(paginator.num_pages) extra_step = False if request.method == 'POST' and request.POST.get('end'): extra_ids = request.POST.get('extra_ids', None) @@ -853,7 +860,7 @@ def view_feedback_pending(request, year): messages.success(request, 'Feedback saved') return redirect('ietf.nomcom.views.view_feedback_pending', year=year) else: - formset = FeedbackFormSet(queryset=feedbacks) + formset = FeedbackFormSet(queryset=feedback_page.object_list) for form in formset.forms: form.set_nomcom(nomcom, request.user) type_dict = OrderedDict() @@ -875,6 +882,7 @@ def view_feedback_pending(request, year): 'types': FeedbackTypeName.objects.all().order_by('pk'), 'nomcom': nomcom, 'is_chair_task' : True, + 'page': feedback_page, }) diff --git a/ietf/templates/nomcom/view_feedback_pending.html b/ietf/templates/nomcom/view_feedback_pending.html index 9d3196549..f3d314d7c 100644 --- a/ietf/templates/nomcom/view_feedback_pending.html +++ b/ietf/templates/nomcom/view_feedback_pending.html @@ -150,12 +150,34 @@ + + + {% buttons %} {% endbuttons %} {% endif %} + {% else %}

There is no pending feedback.

{% endif %}