Skip to content

Commit b984422

Browse files
committed
Added pagination to the nomcom pending-feedback page, to reduce load time.
- Legacy-Id: 15534
1 parent 8a5e302 commit b984422

2 files changed

Lines changed: 34 additions & 4 deletions

File tree

ietf/nomcom/views.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from django.contrib.auth.decorators import login_required
77
from django.contrib.auth.models import AnonymousUser
88
from django.contrib import messages
9+
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
910
from django.urls import reverse
1011
from django.http import Http404, HttpResponseRedirect, HttpResponseForbidden
1112
from django.shortcuts import render, get_object_or_404, redirect
@@ -789,9 +790,15 @@ def view_feedback_pending(request, year):
789790
FeedbackFormSet = modelformset_factory(Feedback,
790791
form=PendingFeedbackForm,
791792
extra=0)
792-
feedbacks = Feedback.objects.filter(type__isnull=True, nomcom=nomcom)
793-
794-
793+
feedback_list = Feedback.objects.filter(type__isnull=True, nomcom=nomcom).order_by('-time')
794+
paginator = Paginator(feedback_list, 20)
795+
page_num = request.GET.get('page')
796+
try:
797+
feedback_page = paginator.page(page_num)
798+
except PageNotAnInteger:
799+
feedback_page = paginator.page(1)
800+
except EmptyPage:
801+
feedback_page = paginator.page(paginator.num_pages)
795802
extra_step = False
796803
if request.method == 'POST' and request.POST.get('end'):
797804
extra_ids = request.POST.get('extra_ids', None)
@@ -853,7 +860,7 @@ def view_feedback_pending(request, year):
853860
messages.success(request, 'Feedback saved')
854861
return redirect('ietf.nomcom.views.view_feedback_pending', year=year)
855862
else:
856-
formset = FeedbackFormSet(queryset=feedbacks)
863+
formset = FeedbackFormSet(queryset=feedback_page.object_list)
857864
for form in formset.forms:
858865
form.set_nomcom(nomcom, request.user)
859866
type_dict = OrderedDict()
@@ -875,6 +882,7 @@ def view_feedback_pending(request, year):
875882
'types': FeedbackTypeName.objects.all().order_by('pk'),
876883
'nomcom': nomcom,
877884
'is_chair_task' : True,
885+
'page': feedback_page,
878886
})
879887

880888

ietf/templates/nomcom/view_feedback_pending.html

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,34 @@ <h4 class="modal-title" id="label{{ form.instance.id }}">
150150
</tbody>
151151
</table>
152152

153+
<div class="pagination text-center col-md-12 col-sm-12">
154+
<span class="step-links">
155+
{% if page.has_previous %}
156+
<a href="?page={{ page.previous_page_number }}">&lt;&nbsp;</a>
157+
{% else %}
158+
|&nbsp;
159+
{% endif %}
160+
161+
<span class="current">
162+
Page {{ page.number }} of {{ page.paginator.num_pages }}
163+
</span>
164+
165+
{% if page.has_next %}
166+
<a href="?page={{ page.next_page_number }}">&nbsp;&gt;</a>
167+
{% else %}
168+
&nbsp;|
169+
{% endif %}
170+
</span>
171+
</div>
172+
173+
153174
{% buttons %}
154175
<input class="btn btn-primary" type="submit" value="Classify">
155176
{% endbuttons %}
156177
{% endif %}
157178
</form>
158179

180+
159181
{% else %}
160182
<p>There is no pending feedback.</p>
161183
{% endif %}

0 commit comments

Comments
 (0)