Request invite flow

This commit is contained in:
Mouse Reeve
2021-03-20 19:14:41 -07:00
parent 4d07cb1eb5
commit d15396eb26
8 changed files with 81 additions and 16 deletions

View File

@ -13,7 +13,7 @@ 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
from .invite import ManageInvites, Invite, InviteRequest
from .isbn import Isbn
from .landing import About, Home, Discover
from .list import Lists, List, Curate, UserLists

View File

@ -2,7 +2,7 @@
import re
from requests import HTTPError
from django.core.exceptions import FieldError
from django.db.models import Q
from django.db.models import Max, Q
from bookwyrm import activitypub, models
from bookwyrm.connectors import ConnectorException, get_data
@ -216,3 +216,20 @@ def is_blocked(viewer, user):
if viewer.is_authenticated and viewer in user.blocks.all():
return True
return False
def get_discover_books():
""" list of books for the discover page """
return list(
set(
models.Edition.objects.filter(
review__published_date__isnull=False,
review__deleted=False,
review__user__local=True,
review__privacy__in=["public", "unlisted"],
)
.exclude(cover__exact="")
.annotate(Max("review__published_date"))
.order_by("-review__published_date__max")[:6]
)
)

View File

@ -9,6 +9,7 @@ from django.views import View
from bookwyrm import forms, models
from bookwyrm.settings import PAGE_LENGTH
from . import helpers
# pylint: disable= no-self-use
@ -77,3 +78,22 @@ class Invite(View):
return TemplateResponse(request, "invite.html", data)
# post handling is in views.authentication.Register
class InviteRequest(View):
""" prospective users sign up here """
def post(self, request):
""" create a request """
form = forms.InviteRequestForm(request.POST)
received = False
if form.is_valid():
received = True
form.save()
data = {
"request_form": form,
"request_received": received,
"books": helpers.get_discover_books(),
}
return TemplateResponse(request, "discover/discover.html", data)

View File

@ -1,10 +1,10 @@
""" non-interactive pages """
from django.db.models import Max
from django.template.response import TemplateResponse
from django.views import View
from bookwyrm import forms, models
from .feed import Feed
from . import helpers
# pylint: disable= no-self-use
@ -33,20 +33,9 @@ class Discover(View):
def get(self, request):
""" tiled book activity page """
books = (
models.Edition.objects.filter(
review__published_date__isnull=False,
review__deleted=False,
review__user__local=True,
review__privacy__in=["public", "unlisted"],
)
.exclude(cover__exact="")
.annotate(Max("review__published_date"))
.order_by("-review__published_date__max")[:6]
)
data = {
"register_form": forms.RegisterForm(),
"books": list(set(books)),
"request_form": forms.InviteRequestForm(),
"books": helpers.get_discover_books(),
}
return TemplateResponse(request, "discover/discover.html", data)