Add default user auth group to registration settings

This commit is contained in:
Christof Dorner 2022-12-27 22:42:27 +01:00
parent 6425e569c5
commit 2c680cb365
4 changed files with 56 additions and 0 deletions

View file

@ -91,6 +91,7 @@ class RegistrationForm(CustomForm):
"invite_request_question",
"invite_question_text",
"require_confirm_email",
"default_user_auth_group",
]
widgets = {

View file

@ -0,0 +1,34 @@
# Generated by Django 3.2.16 on 2022-12-27 21:34
from django.db import migrations, models
import django.db.models.deletion
def backfill_sitesettings(apps, schema_editor):
db_alias = schema_editor.connection.alias
group_model = apps.get_model("auth", "Group")
editor_group = group_model.objects.using(db_alias).filter(name="editor").first()
sitesettings_model = apps.get_model("bookwyrm", "SiteSettings")
sitesettings_model.objects.update(default_user_auth_group=editor_group)
class Migration(migrations.Migration):
dependencies = [
("bookwyrm", "0175_merge_0173_author_website_0174_merge_20230111_1523"),
]
operations = [
migrations.AddField(
model_name="sitesettings",
name="default_user_auth_group",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.RESTRICT,
to="auth.group",
),
),
migrations.RunPython(backfill_sitesettings, migrations.RunPython.noop),
]

View file

@ -3,6 +3,7 @@ import datetime
from urllib.parse import urljoin
import uuid
import django.contrib.auth.models as auth_models
from django.core.exceptions import PermissionDenied
from django.db import models, IntegrityError
from django.dispatch import receiver
@ -70,6 +71,9 @@ class SiteSettings(SiteModel):
allow_invite_requests = models.BooleanField(default=True)
invite_request_question = models.BooleanField(default=False)
require_confirm_email = models.BooleanField(default=True)
default_user_auth_group = models.ForeignKey(
auth_models.Group, null=True, blank=True, on_delete=models.PROTECT
)
invite_question_text = models.CharField(
max_length=255, blank=True, default="What is your favourite book?"

View file

@ -38,6 +38,23 @@
{% trans "Allow registration" %}
</label>
</div>
<div class="block">
<label class="label" for="id_default_user_auth_group">
{% trans "Default access level:" %}
</label>
<div class="select">
<select name="default_user_auth_group" id="id_default_user_auth_group" desc_default_user_auth_group="desc_default_user_auth_group">
{% for instance in form.default_user_auth_group.field.queryset %}
<option value="{{ instance.pk }}" {% if instance.pk == form.default_user_auth_group.value %}selected{% endif %}>
{{ instance.name|title }}
</option>
{% endfor %}
<option value="" {% if not form.default_user_auth_group.value %}selected{% endif %}>
User
</option>
</select>
</div>
</div>
<div class="field">
<label class="label mb-0" for="id_require_confirm_email">
{{ form.require_confirm_email }}