From 5e24b438ffc922f8cf449fe848fadbc58c7ed99d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 20 Mar 2021 20:15:50 -0700 Subject: [PATCH] Placeholders for send/ignore request flows --- .../migrations/0056_auto_20210321_0123.py | 58 ------------------- .../migrations/0056_auto_20210321_0303.py | 36 ++++++++++++ bookwyrm/models/site.py | 1 + .../settings/manage_invite_requests.html | 29 +++++++++- bookwyrm/urls.py | 5 ++ bookwyrm/views/__init__.py | 3 +- bookwyrm/views/invite.py | 16 ++++- 7 files changed, 87 insertions(+), 61 deletions(-) delete mode 100644 bookwyrm/migrations/0056_auto_20210321_0123.py create mode 100644 bookwyrm/migrations/0056_auto_20210321_0303.py diff --git a/bookwyrm/migrations/0056_auto_20210321_0123.py b/bookwyrm/migrations/0056_auto_20210321_0123.py deleted file mode 100644 index f36e4b12d..000000000 --- a/bookwyrm/migrations/0056_auto_20210321_0123.py +++ /dev/null @@ -1,58 +0,0 @@ -# Generated by Django 3.1.6 on 2021-03-21 01:23 - -import bookwyrm.models.fields -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ("bookwyrm", "0055_auto_20210321_0101"), - ] - - operations = [ - migrations.AddField( - model_name="sitesettings", - name="allow_invite_requests", - field=models.BooleanField(default=True), - ), - migrations.CreateModel( - name="InviteRequest", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("created_date", models.DateTimeField(auto_now_add=True)), - ("updated_date", models.DateTimeField(auto_now=True)), - ( - "remote_id", - bookwyrm.models.fields.RemoteIdField( - max_length=255, - null=True, - validators=[bookwyrm.models.fields.validate_remote_id], - ), - ), - ("email", models.EmailField(max_length=255, unique=True)), - ("invite_sent", models.BooleanField(default=False)), - ( - "invite", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="bookwyrm.siteinvite", - ), - ), - ], - options={ - "abstract": False, - }, - ), - ] diff --git a/bookwyrm/migrations/0056_auto_20210321_0303.py b/bookwyrm/migrations/0056_auto_20210321_0303.py new file mode 100644 index 000000000..ba406b86c --- /dev/null +++ b/bookwyrm/migrations/0056_auto_20210321_0303.py @@ -0,0 +1,36 @@ +# Generated by Django 3.1.6 on 2021-03-21 03:03 + +import bookwyrm.models.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0055_auto_20210321_0101'), + ] + + operations = [ + migrations.AddField( + model_name='sitesettings', + name='allow_invite_requests', + field=models.BooleanField(default=True), + ), + migrations.CreateModel( + name='InviteRequest', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_date', models.DateTimeField(auto_now_add=True)), + ('updated_date', models.DateTimeField(auto_now=True)), + ('remote_id', bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id])), + ('email', models.EmailField(max_length=255, unique=True)), + ('invite_sent', models.BooleanField(default=False)), + ('ignored', models.BooleanField(default=False)), + ('invite', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='bookwyrm.siteinvite')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/bookwyrm/models/site.py b/bookwyrm/models/site.py index 2722de174..2c8d25539 100644 --- a/bookwyrm/models/site.py +++ b/bookwyrm/models/site.py @@ -79,6 +79,7 @@ class InviteRequest(BookWyrmModel): SiteInvite, on_delete=models.SET_NULL, null=True, blank=True ) invite_sent = models.BooleanField(default=False) + ignored = models.BooleanField(default=False) def save(self, *args, **kwargs): """ don't create a request for a registered email """ diff --git a/bookwyrm/templates/settings/manage_invite_requests.html b/bookwyrm/templates/settings/manage_invite_requests.html index ef2a3356c..2441ed804 100644 --- a/bookwyrm/templates/settings/manage_invite_requests.html +++ b/bookwyrm/templates/settings/manage_invite_requests.html @@ -25,6 +25,7 @@ {% trans "Date" %} {% trans "Email" %} {% trans "Status" %} + {% trans "Action" %} {% if not requests %} {% trans "No requests" %} @@ -33,7 +34,33 @@ {{ req.created_date | naturaltime }} {{ req.email }} - {% trans "Pending" %} + + {% if req.invite.times_used %} + {% trans "Accepted" %} + {% elif req.invite %} + {% trans "Sent" %} + {% else %} + {% trans "Requested" %} + {% endif %} + + + {% if req.invite and not req.invite.times_used %} + + {% else %} +
+
+ {% csrf_token %} + + +
+ +
+ + +
+
+ {% endif %} + {% endfor %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index e61758a8d..30c1bba4e 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -59,6 +59,11 @@ urlpatterns = [ views.ManageInviteRequests.as_view(), name="settings-invite-requests", ), + re_path( + r"^settings/requests/ignore?$", + views.ignore_invite_request, + name="settings-invite-requests-ignore", + ), re_path( r"^invite-request/?$", views.InviteRequest.as_view(), name="invite-request" ), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 242657419..3402e65f7 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -13,7 +13,8 @@ from .goal import Goal, hide_goal from .import_data import Import, ImportStatus from .inbox import Inbox from .interaction import Favorite, Unfavorite, Boost, Unboost -from .invite import ManageInvites, Invite, InviteRequest, ManageInviteRequests +from .invite import ManageInvites, Invite, InviteRequest +from .invite import ManageInviteRequests, ignore_invite_request from .isbn import Isbn from .landing import About, Home, Discover from .list import Lists, List, Curate, UserLists diff --git a/bookwyrm/views/invite.py b/bookwyrm/views/invite.py index 03723d946..39d6435eb 100644 --- a/bookwyrm/views/invite.py +++ b/bookwyrm/views/invite.py @@ -6,6 +6,7 @@ from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.utils.decorators import method_decorator from django.views import View +from django.views.decorators.http import require_POST from bookwyrm import forms, models from bookwyrm.settings import PAGE_LENGTH @@ -85,21 +86,29 @@ class ManageInviteRequests(View): def get(self, request): """ view a list of requests """ + ignored = request.GET.get("ignored", False) try: page = int(request.GET.get("page", 1)) except ValueError: page = 1 paginated = Paginator( - models.InviteRequest.objects.all().order_by("-created_date"), + models.InviteRequest.objects.filter( + ignored=ignored + ).order_by("-created_date"), PAGE_LENGTH, ) data = { + "ignored": ignored, "requests": paginated.page(page), } return TemplateResponse(request, "settings/manage_invite_requests.html", data) + def post(self, request): + """ send out an invite """ + + class InviteRequest(View): """ prospective users sign up here """ @@ -118,3 +127,8 @@ class InviteRequest(View): "books": helpers.get_discover_books(), } return TemplateResponse(request, "discover/discover.html", data) + + +@require_POST +def ignore_invite_request(request): + """ ok """