From 5fbb5c655b72acf69cf9aa7e52b66bb8bf927f31 Mon Sep 17 00:00:00 2001 From: Orage Pika Date: Mon, 7 Mar 2022 18:49:59 +0100 Subject: [PATCH 01/15] custom questions --- bookwyrm/forms.py | 5 +++-- bookwyrm/migrations/0145_user_question.py | 18 ++++++++++++++++++ .../migrations/0146_alter_user_question.py | 19 +++++++++++++++++++ .../migrations/0147_alter_user_question.py | 19 +++++++++++++++++++ .../0148_rename_question_user_answer.py | 18 ++++++++++++++++++ .../migrations/0149_inviterequest_answer.py | 19 +++++++++++++++++++ .../0150_alter_inviterequest_answer.py | 18 ++++++++++++++++++ bookwyrm/models/site.py | 7 +++++++ bookwyrm/models/user.py | 2 ++ bookwyrm/templates/landing/layout.html | 8 ++++++++ .../invites/manage_invite_requests.html | 2 ++ bookwyrm/templates/settings/site.html | 12 ++++++++++++ bookwyrm/views/admin/invite.py | 6 +++++- bookwyrm/views/landing/register.py | 2 ++ 14 files changed, 152 insertions(+), 3 deletions(-) create mode 100644 bookwyrm/migrations/0145_user_question.py create mode 100644 bookwyrm/migrations/0146_alter_user_question.py create mode 100644 bookwyrm/migrations/0147_alter_user_question.py create mode 100644 bookwyrm/migrations/0148_rename_question_user_answer.py create mode 100644 bookwyrm/migrations/0149_inviterequest_answer.py create mode 100644 bookwyrm/migrations/0150_alter_inviterequest_answer.py diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index f152ed4e..835bb4cf 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -1,4 +1,5 @@ """ using django model forms """ +from dataclasses import field import datetime from collections import defaultdict from urllib.parse import urlparse @@ -50,7 +51,7 @@ class LoginForm(CustomForm): class RegisterForm(CustomForm): class Meta: model = models.User - fields = ["localname", "email", "password"] + fields = ["localname", "email", "password", "answer"] help_texts = {f: None for f in fields} widgets = {"password": PasswordInput()} @@ -404,7 +405,7 @@ class InviteRequestForm(CustomForm): class Meta: model = models.InviteRequest - fields = ["email"] + fields = ["email", "answer"] class CreateInviteForm(CustomForm): diff --git a/bookwyrm/migrations/0145_user_question.py b/bookwyrm/migrations/0145_user_question.py new file mode 100644 index 00000000..7cfb8b93 --- /dev/null +++ b/bookwyrm/migrations/0145_user_question.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-03-04 22:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0144_alter_announcement_display_type'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='question', + field=models.TextField(blank=True, max_length=500, verbose_name='question'), + ), + ] diff --git a/bookwyrm/migrations/0146_alter_user_question.py b/bookwyrm/migrations/0146_alter_user_question.py new file mode 100644 index 00000000..c83ee768 --- /dev/null +++ b/bookwyrm/migrations/0146_alter_user_question.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2022-03-04 23:15 + +import bookwyrm.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0145_user_question'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='question', + field=bookwyrm.models.fields.TextField(blank=True, max_length=500, verbose_name='question'), + ), + ] diff --git a/bookwyrm/migrations/0147_alter_user_question.py b/bookwyrm/migrations/0147_alter_user_question.py new file mode 100644 index 00000000..7938ff00 --- /dev/null +++ b/bookwyrm/migrations/0147_alter_user_question.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2022-03-04 23:19 + +import bookwyrm.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0146_alter_user_question'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='question', + field=bookwyrm.models.fields.TextField(blank=True, max_length=500), + ), + ] diff --git a/bookwyrm/migrations/0148_rename_question_user_answer.py b/bookwyrm/migrations/0148_rename_question_user_answer.py new file mode 100644 index 00000000..8570427e --- /dev/null +++ b/bookwyrm/migrations/0148_rename_question_user_answer.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-03-05 11:08 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0147_alter_user_question'), + ] + + operations = [ + migrations.RenameField( + model_name='user', + old_name='question', + new_name='answer', + ), + ] diff --git a/bookwyrm/migrations/0149_inviterequest_answer.py b/bookwyrm/migrations/0149_inviterequest_answer.py new file mode 100644 index 00000000..921a6988 --- /dev/null +++ b/bookwyrm/migrations/0149_inviterequest_answer.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2022-03-05 11:39 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0148_rename_question_user_answer'), + ] + + operations = [ + migrations.AddField( + model_name='inviterequest', + name='answer', + field=models.TextField(default='yyyyy', max_length=512), + preserve_default=False, + ), + ] diff --git a/bookwyrm/migrations/0150_alter_inviterequest_answer.py b/bookwyrm/migrations/0150_alter_inviterequest_answer.py new file mode 100644 index 00000000..74ce8602 --- /dev/null +++ b/bookwyrm/migrations/0150_alter_inviterequest_answer.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-03-05 12:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0149_inviterequest_answer'), + ] + + operations = [ + migrations.AlterField( + model_name='inviterequest', + name='answer', + field=models.TextField(max_length=50), + ), + ] diff --git a/bookwyrm/models/site.py b/bookwyrm/models/site.py index c6c53f76..86ba69d5 100644 --- a/bookwyrm/models/site.py +++ b/bookwyrm/models/site.py @@ -48,8 +48,14 @@ class SiteSettings(models.Model): # registration allow_registration = models.BooleanField(default=False) allow_invite_requests = models.BooleanField(default=True) + invite_request_question = models.BooleanField(default=False) require_confirm_email = models.BooleanField(default=True) + invite_question_text = models.CharField( + max_length=255, + null=not(invite_request_question), + default="What is your favourite book?" + ) # images logo = models.ImageField(upload_to="logos/", null=True, blank=True) logo_small = models.ImageField(upload_to="logos/", null=True, blank=True) @@ -149,6 +155,7 @@ class InviteRequest(BookWyrmModel): invite = models.ForeignKey( SiteInvite, on_delete=models.SET_NULL, null=True, blank=True ) + answer = models.TextField(max_length=50, unique=False, null=False) invite_sent = models.BooleanField(default=False) ignored = models.BooleanField(default=False) diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index be5c1992..d6272dc0 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -1,5 +1,6 @@ """ database schema for user data """ import re +import string from urllib.parse import urlparse from django.apps import apps @@ -52,6 +53,7 @@ class User(OrderedCollectionPageMixin, AbstractUser): username = fields.UsernameField() email = models.EmailField(unique=True, null=True) + answer = fields.TextField(max_length=500, blank=True) key_pair = fields.OneToOneField( "KeyPair", diff --git a/bookwyrm/templates/landing/layout.html b/bookwyrm/templates/landing/layout.html index 6d69cafc..ad7c27b8 100644 --- a/bookwyrm/templates/landing/layout.html +++ b/bookwyrm/templates/landing/layout.html @@ -70,6 +70,14 @@ {% include 'snippets/form_errors.html' with errors_list=request_form.email.errors id="desc_request_email" %} + {% if site.invite_request_question %} +
+ + + {% include 'snippets/form_errors.html' with errors_list=request_form.answer.errors id="desc_answer_register" %} +
+ {% endif %} + {% endif %} diff --git a/bookwyrm/templates/settings/invites/manage_invite_requests.html b/bookwyrm/templates/settings/invites/manage_invite_requests.html index fb7c0b1f..1a38e38e 100644 --- a/bookwyrm/templates/settings/invites/manage_invite_requests.html +++ b/bookwyrm/templates/settings/invites/manage_invite_requests.html @@ -40,6 +40,7 @@ {% include 'snippets/table-sort-header.html' with field="invite__invitees__created_date" sort=sort text=text %} {% trans "Email" %} + {% trans "Answer" %} {% trans "Status" as text %} {% include 'snippets/table-sort-header.html' with field="invite__times_used" sort=sort text=text %} @@ -54,6 +55,7 @@ {{ req.created_date | naturaltime }} {{ req.invite.invitees.first.created_date | naturaltime }} {{ req.email }} + {{ req.answer }} {% if req.invite.times_used %} {% trans "Accepted" %} diff --git a/bookwyrm/templates/settings/site.html b/bookwyrm/templates/settings/site.html index 4d9dbe40..1d79ecf7 100644 --- a/bookwyrm/templates/settings/site.html +++ b/bookwyrm/templates/settings/site.html @@ -145,6 +145,18 @@ {% trans "Allow invite requests" %} +
+ +
+
+ +
- {% if site.invite_request_question %} -
- - - {% include 'snippets/form_errors.html' with errors_list=request_form.answer.errors id="desc_answer_register" %} -
- {% endif %} + {% if site.invite_request_question %} +
+ + + {% include 'snippets/form_errors.html' with errors_list=request_form.answer.errors id="desc_answer_register" %} +
+ {% endif %} diff --git a/bookwyrm/templates/settings/site.html b/bookwyrm/templates/settings/site.html index 1d79ecf7..d55514b5 100644 --- a/bookwyrm/templates/settings/site.html +++ b/bookwyrm/templates/settings/site.html @@ -145,18 +145,18 @@ {% trans "Allow invite requests" %} -
+
-
- -
+
+ +