From d3381d7a799d98f40a59c962be5b124d0cc6ecc3 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 23 Feb 2021 14:41:33 -0800 Subject: [PATCH 1/3] Paginates invite page I sure have sent out a lot of invites --- bookwyrm/templates/settings/manage_invites.html | 1 + bookwyrm/views/invite.py | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/settings/manage_invites.html b/bookwyrm/templates/settings/manage_invites.html index 03b68b20..42668a3d 100644 --- a/bookwyrm/templates/settings/manage_invites.html +++ b/bookwyrm/templates/settings/manage_invites.html @@ -22,6 +22,7 @@ {% endfor %} + {% include 'snippets/pagination.html' with page=invites path=request.path %}
diff --git a/bookwyrm/views/invite.py b/bookwyrm/views/invite.py index bd0715a0..ed7b1f5f 100644 --- a/bookwyrm/views/invite.py +++ b/bookwyrm/views/invite.py @@ -1,5 +1,6 @@ ''' invites when registration is closed ''' from django.contrib.auth.decorators import login_required, permission_required +from django.core.paginator import Paginator from django.http import HttpResponseBadRequest from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse @@ -7,6 +8,7 @@ from django.utils.decorators import method_decorator from django.views import View from bookwyrm import forms, models +from bookwyrm.settings import PAGE_LENGTH # pylint: disable= no-self-use @@ -18,10 +20,18 @@ class ManageInvites(View): ''' create invites ''' def get(self, request): ''' invite management page ''' + try: + page = int(request.GET.get('page', 1)) + except ValueError: + page = 1 + + paginated = Paginator(models.SiteInvite.objects.filter( + user=request.user + ).order_by('-created_date'), PAGE_LENGTH) + data = { 'title': 'Invitations', - 'invites': models.SiteInvite.objects.filter( - user=request.user).order_by('-created_date'), + 'invites': paginated.page(page), 'form': forms.CreateInviteForm(), } return TemplateResponse(request, 'settings/manage_invites.html', data) From 384187a263c649c4b563b1d422dc09e5c0f07ede Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 23 Feb 2021 15:21:37 -0800 Subject: [PATCH 2/3] Moves create invite form to top of invite page --- .../templates/settings/manage_invites.html | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/bookwyrm/templates/settings/manage_invites.html b/bookwyrm/templates/settings/manage_invites.html index 42668a3d..086615a9 100644 --- a/bookwyrm/templates/settings/manage_invites.html +++ b/bookwyrm/templates/settings/manage_invites.html @@ -2,29 +2,6 @@ {% block header %}Invites{% endblock %} {% load humanize %} {% block panel %} -
- - - - - - - - {% if not invites %} - - {% endif %} - {% for invite in invites %} - - - - - - - {% endfor %} -
LinkExpiresMax usesTimes used
No active invites
{{ invite.link }}{{ invite.expiry|naturaltime }}{{ invite.use_limit }}{{ invite.times_used }}
- {% include 'snippets/pagination.html' with page=invites path=request.path %} -
-

Generate New Invite

@@ -48,4 +25,27 @@
+ +
+ + + + + + + + {% if not invites %} + + {% endif %} + {% for invite in invites %} + + + + + + + {% endfor %} +
LinkExpiresMax usesTimes used
No active invites
{{ invite.link }}{{ invite.expiry|naturaltime }}{{ invite.use_limit }}{{ invite.times_used }}
+ {% include 'snippets/pagination.html' with page=invites path=request.path %} +
{% endblock %} From 23fb5f62a2e58d4869b1ab79aa72f105dda305f7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 23 Feb 2021 15:25:26 -0800 Subject: [PATCH 3/3] Keep invite settings in form after save --- bookwyrm/views/invite.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/bookwyrm/views/invite.py b/bookwyrm/views/invite.py index ed7b1f5f..6b3611fc 100644 --- a/bookwyrm/views/invite.py +++ b/bookwyrm/views/invite.py @@ -46,7 +46,15 @@ class ManageInvites(View): invite.user = request.user invite.save() - return redirect('/settings/invites') + paginated = Paginator(models.SiteInvite.objects.filter( + user=request.user + ).order_by('-created_date'), PAGE_LENGTH) + data = { + 'title': 'Invitations', + 'invites': paginated.page(1), + 'form': form + } + return TemplateResponse(request, 'settings/manage_invites.html', data) class Invite(View):