From 9b087199edb74582e3d2e1eceedbcef695320c32 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 5 Dec 2022 16:03:43 -0800 Subject: [PATCH 01/12] Adds new role and permissions --- bookwyrm/management/commands/initdb.py | 26 +++++--- .../migrations/0168_auto_20221205_2331.py | 59 +++++++++++++++++++ 2 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 bookwyrm/migrations/0168_auto_20221205_2331.py diff --git a/bookwyrm/management/commands/initdb.py b/bookwyrm/management/commands/initdb.py index 23020a0a6..4b43fac7c 100644 --- a/bookwyrm/management/commands/initdb.py +++ b/bookwyrm/management/commands/initdb.py @@ -8,7 +8,7 @@ from bookwyrm import models def init_groups(): """permission levels""" - groups = ["admin", "moderator", "editor"] + groups = ["admin", "owner", "moderator", "editor"] for group in groups: Group.objects.create(name=group) @@ -16,40 +16,50 @@ def init_groups(): def init_permissions(): """permission types""" permissions = [ + { + "codename": "manage_registration", + "name": "allow or prevent user registrations", + "groups": ["admin"], + }, + { + "codename": "system_administration", + "name": "technical controls", + "groups": ["admin"], + }, { "codename": "edit_instance_settings", "name": "change the instance info", - "groups": ["admin"], + "groups": ["admin", "owner"], }, { "codename": "set_user_group", "name": "change what group a user is in", - "groups": ["admin", "moderator"], + "groups": ["admin", "owner", "moderator"], }, { "codename": "control_federation", "name": "control who to federate with", - "groups": ["admin", "moderator"], + "groups": ["admin", "owner", "moderator"], }, { "codename": "create_invites", "name": "issue invitations to join", - "groups": ["admin", "moderator"], + "groups": ["admin", "owner", "moderator"], }, { "codename": "moderate_user", "name": "deactivate or silence a user", - "groups": ["admin", "moderator"], + "groups": ["admin", "owner", "moderator"], }, { "codename": "moderate_post", "name": "delete other users' posts", - "groups": ["admin", "moderator"], + "groups": ["admin", "owner", "moderator"], }, { "codename": "edit_book", "name": "edit book info", - "groups": ["admin", "moderator", "editor"], + "groups": ["admin", "owner", "moderator", "editor"], }, ] diff --git a/bookwyrm/migrations/0168_auto_20221205_2331.py b/bookwyrm/migrations/0168_auto_20221205_2331.py new file mode 100644 index 000000000..a2e79e664 --- /dev/null +++ b/bookwyrm/migrations/0168_auto_20221205_2331.py @@ -0,0 +1,59 @@ +""" I added two new permission types and a new group to the management command that +creates the database on install, this creates them for existing instances """ +# Generated by Django 3.2.16 on 2022-12-05 23:31 + +from django.db import migrations + + +def create_groups_and_perms(apps, schema_editor): + """create the new "owner" group and "system admin" permission""" + db_alias = schema_editor.connection.alias + group_model = apps.get_model("auth", "Group") + # Add the "owner" group, if needed + owner_group, group_created = group_model.objects.using(db_alias).get_or_create( + name="owner" + ) + + # Create perms, if needed + user_model = apps.get_model("bookwyrm", "User") + content_type_model = apps.get_model("contenttypes", "ContentType") + content_type = content_type_model.objects.get_for_model(user_model) + perms_model = apps.get_model("auth", "Permission") + _, perm_created = perms_model.objects.using(db_alias).get_or_create( + codename="manage_registration", + name="allow or prevent user registration", + content_type=content_type, + ) + _, admin_perm_created = perms_model.objects.using(db_alias).get_or_create( + codename="system_administration", + name="technical controls", + content_type=content_type, + ) + + # Add perms to the group if anything was created + if group_created or perm_created or admin_perm_created or True: + perms = [ + "manage_registration", + "system_administration", + "edit_instance_settings", + "set_user_group", + "control_federation", + "create_invites", + "moderate_user", + "moderate_post", + "edit_book", + ] + owner_group.permissions.set( + perms_model.objects.using(db_alias).filter(codename__in=perms).all() + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0167_auto_20221125_1900"), + ] + + operations = [ + migrations.RunPython(create_groups_and_perms, migrations.RunPython.noop) + ] From dd9fbca7d79f62a1250f8e60a7b4190800a46ef2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 5 Dec 2022 16:19:15 -0800 Subject: [PATCH 02/12] Removes registration from site settings form --- bookwyrm/forms/admin.py | 19 +++++++++- bookwyrm/templates/settings/site.html | 50 --------------------------- 2 files changed, 18 insertions(+), 51 deletions(-) diff --git a/bookwyrm/forms/admin.py b/bookwyrm/forms/admin.py index 2d69ef702..0678c6650 100644 --- a/bookwyrm/forms/admin.py +++ b/bookwyrm/forms/admin.py @@ -55,7 +55,24 @@ class CreateInviteForm(CustomForm): class SiteForm(CustomForm): class Meta: model = models.SiteSettings - exclude = ["admin_code", "install_mode", "imports_enabled"] + fields = [ + "name", + "instance_tagline", + "instance_description", + "instance_short_description", + "default_theme", + "code_of_conduct", + "privacy_policy", + "impressum", + "show_impressum", + "logo", + "logo_small", + "favicon", + "support_link", + "support_title", + "admin_email", + "footer_item", + ] widgets = { "instance_short_description": forms.TextInput( attrs={"aria-describedby": "desc_instance_short_description"} diff --git a/bookwyrm/templates/settings/site.html b/bookwyrm/templates/settings/site.html index 4cfa531e5..b6aef774a 100644 --- a/bookwyrm/templates/settings/site.html +++ b/bookwyrm/templates/settings/site.html @@ -10,7 +10,6 @@
  • {% trans "Instance Info" %}
  • {% trans "Display" %}
  • {% trans "Footer Content" %}
  • -
  • {% trans "Registration" %}
  • {% endblock %} @@ -141,55 +140,6 @@ - - -
    -

    {% trans "Registration" %}

    -
    -
    - -
    -
    - -

    {% trans "(Recommended if registration is open)" %}

    -
    -
    - -
    -
    - -
    -
    - -
    -
    - - {{ site_form.registration_closed_text }} -
    -
    - - {{ site_form.invite_request_text }} - - {% include 'snippets/form_errors.html' with errors_list=site_form.invite_request_text.errors id="desc_invite_request_text" %} -
    -
    -
    -
    From 933cb6440fa62fa7c1f763a987efa9da113c5df0 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 5 Dec 2022 16:51:04 -0800 Subject: [PATCH 03/12] Creates admin views for owner and admin registration settings --- bookwyrm/forms/admin.py | 34 ++++++++ bookwyrm/templates/settings/layout.html | 9 ++ bookwyrm/templates/settings/registration.html | 83 +++++++++++++++++++ .../settings/registration_limited.html | 75 +++++++++++++++++ bookwyrm/urls.py | 10 +++ bookwyrm/views/__init__.py | 2 +- bookwyrm/views/admin/site.py | 54 ++++++++++++ 7 files changed, 266 insertions(+), 1 deletion(-) create mode 100644 bookwyrm/templates/settings/registration.html create mode 100644 bookwyrm/templates/settings/registration_limited.html diff --git a/bookwyrm/forms/admin.py b/bookwyrm/forms/admin.py index 0678c6650..acff6cfaa 100644 --- a/bookwyrm/forms/admin.py +++ b/bookwyrm/forms/admin.py @@ -77,6 +77,23 @@ class SiteForm(CustomForm): "instance_short_description": forms.TextInput( attrs={"aria-describedby": "desc_instance_short_description"} ), + } + + +class RegistrationForm(CustomForm): + class Meta: + model = models.SiteSettings + fields = [ + "allow_registration", + "allow_invite_requests", + "registration_closed_text", + "invite_request_text", + "invite_request_question", + "invite_question_text", + "require_confirm_email", + ] + + widgets = { "require_confirm_email": forms.CheckboxInput( attrs={"aria-describedby": "desc_require_confirm_email"} ), @@ -86,6 +103,23 @@ class SiteForm(CustomForm): } +class RegistrationLimitedForm(CustomForm): + class Meta: + model = models.SiteSettings + fields = [ + "registration_closed_text", + "invite_request_text", + "invite_request_question", + "invite_question_text", + ] + + widgets = { + "invite_request_text": forms.Textarea( + attrs={"aria-describedby": "desc_invite_request_text"} + ), + } + + class ThemeForm(CustomForm): class Meta: model = models.Theme diff --git a/bookwyrm/templates/settings/layout.html b/bookwyrm/templates/settings/layout.html index f195bf754..274777b4c 100644 --- a/bookwyrm/templates/settings/layout.html +++ b/bookwyrm/templates/settings/layout.html @@ -101,6 +101,15 @@ {% trans "Site Settings" %} {% block site-subtabs %}{% endblock %} +
  • + {% if perms.bookwyrm.manage_registration %} + {% url 'settings-registration' as url %} + {% trans "Registration" %} + {% else %} + {% url 'settings-registration-limited' as url %} + {% trans "Registration" %} + {% endif %} +
  • {% url 'settings-themes' as url %} {% trans "Themes" %} diff --git a/bookwyrm/templates/settings/registration.html b/bookwyrm/templates/settings/registration.html new file mode 100644 index 000000000..5ec7004da --- /dev/null +++ b/bookwyrm/templates/settings/registration.html @@ -0,0 +1,83 @@ +{% extends 'settings/layout.html' %} +{% load i18n %} + +{% block title %}{% trans "Registration" %}{% endblock %} + +{% block header %}{% trans "Registration" %}{% endblock %} + +{% block panel %} +{% if success %} +
    + + + {% trans "Settings saved" %} + +
    +{% endif %} + +{% if form.errors %} +
    + + + {% trans "Unable to save settings" %} + +
    +{% endif %} + +
    + {% csrf_token %} +
    +
    + +
    +
    + +

    {% trans "(Recommended if registration is open)" %}

    +
    +
    + +
    +
    + +
    +
    + +
    +
    + + {{ form.registration_closed_text }} +
    +
    + + {{ form.invite_request_text }} + + {% include 'snippets/form_errors.html' with errors_list=form.invite_request_text.errors id="desc_invite_request_text" %} +
    +
    + +
    + +
    +
    +{% endblock %} + diff --git a/bookwyrm/templates/settings/registration_limited.html b/bookwyrm/templates/settings/registration_limited.html new file mode 100644 index 000000000..1479e7d54 --- /dev/null +++ b/bookwyrm/templates/settings/registration_limited.html @@ -0,0 +1,75 @@ +{% extends 'settings/layout.html' %} +{% load i18n %} + +{% block title %}{% trans "Registration" %}{% endblock %} + +{% block header %}{% trans "Registration" %}{% endblock %} + +{% block panel %} +{% if success %} +
    + + + {% trans "Settings saved" %} + +
    +{% endif %} + +{% if form.errors %} +
    + + + {% trans "Unable to save settings" %} + +
    +{% endif %} + +{% if site.allow_registration %} +
    + {% trans "Registration is enabled on this instance" %} +
    +{% else %} +
    + {% csrf_token %} +
    + {% if site.allow_invite_requests %} +
    + + {{ form.invite_request_text }} + + {% include 'snippets/form_errors.html' with errors_list=form.invite_request_text.errors id="desc_invite_request_text" %} +
    +
    + +
    +
    + +
    + {% endif %} + + {% if not site.allow_invite_requests and not site.allow_registration %} +
    + + {{ form.registration_closed_text }} +
    + {% endif %} +
    + +
    + +
    +
    +{% endif %} +{% endblock %} + diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 90d0d0edc..adfa3f100 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -86,6 +86,16 @@ urlpatterns = [ r"^settings/dashboard/?$", views.Dashboard.as_view(), name="settings-dashboard" ), re_path(r"^settings/site-settings/?$", views.Site.as_view(), name="settings-site"), + re_path( + r"^settings/site-registration/?$", + views.RegistrationLimited.as_view(), + name="settings-registration-limited", + ), + re_path( + r"^settings/site-registration-admin/?$", + views.Registration.as_view(), + name="settings-registration", + ), re_path(r"^settings/themes/?$", views.Themes.as_view(), name="settings-themes"), re_path( r"^settings/themes/(?P\d+)/delete/?$", diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index bc70490c5..66e01524d 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -23,7 +23,7 @@ from .admin.reports import ( unsuspend_user, moderator_delete_user, ) -from .admin.site import Site +from .admin.site import Site, Registration, RegistrationLimited from .admin.themes import Themes, delete_theme from .admin.user_admin import UserAdmin, UserAdminList diff --git a/bookwyrm/views/admin/site.py b/bookwyrm/views/admin/site.py index df3b12aa0..5fe88a553 100644 --- a/bookwyrm/views/admin/site.py +++ b/bookwyrm/views/admin/site.py @@ -35,6 +35,60 @@ class Site(View): return TemplateResponse(request, "settings/site.html", data) +@method_decorator(login_required, name="dispatch") +@method_decorator( + permission_required("bookwyrm.edit_instance_settings", raise_exception=True), + name="dispatch", +) +class RegistrationLimited(View): + """Things related to registering that non-admins owners can change""" + + def get(self, request): + """edit form""" + site = models.SiteSettings.objects.get() + data = {"form": forms.RegistrationLimitedForm(instance=site)} + return TemplateResponse(request, "settings/registration_limited.html", data) + + def post(self, request): + """edit the site settings""" + site = models.SiteSettings.objects.get() + form = forms.RegistrationLimitedForm(request.POST, request.FILES, instance=site) + if not form.is_valid(): + data = {"form": form} + return TemplateResponse(request, "settings/registration_limited.html", data) + site = form.save(request) + + data = {"form": forms.RegistrationLimitedForm(instance=site), "success": True} + return TemplateResponse(request, "settings/registration_limited.html", data) + + +@method_decorator(login_required, name="dispatch") +@method_decorator( + permission_required("bookwyrm.manage_registration", raise_exception=True), + name="dispatch", +) +class Registration(View): + """Control everything about registration""" + + def get(self, request): + """edit form""" + site = models.SiteSettings.objects.get() + data = {"form": forms.RegistrationForm(instance=site)} + return TemplateResponse(request, "settings/registration.html", data) + + def post(self, request): + """edit the site settings""" + site = models.SiteSettings.objects.get() + form = forms.RegistrationForm(request.POST, request.FILES, instance=site) + if not form.is_valid(): + data = {"form": form} + return TemplateResponse(request, "settings/registration.html", data) + site = form.save(request) + + data = {"form": forms.RegistrationForm(instance=site), "success": True} + return TemplateResponse(request, "settings/registration.html", data) + + @login_required @permission_required("bookwyrm.edit_instance_settings", raise_exception=True) def email_preview(request): From c7234bff6481467992c2876ef4529710a97cd053 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 5 Dec 2022 16:58:23 -0800 Subject: [PATCH 04/12] Update admin role for new perms --- bookwyrm/migrations/0168_auto_20221205_2331.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bookwyrm/migrations/0168_auto_20221205_2331.py b/bookwyrm/migrations/0168_auto_20221205_2331.py index a2e79e664..796339a4f 100644 --- a/bookwyrm/migrations/0168_auto_20221205_2331.py +++ b/bookwyrm/migrations/0168_auto_20221205_2331.py @@ -19,12 +19,12 @@ def create_groups_and_perms(apps, schema_editor): content_type_model = apps.get_model("contenttypes", "ContentType") content_type = content_type_model.objects.get_for_model(user_model) perms_model = apps.get_model("auth", "Permission") - _, perm_created = perms_model.objects.using(db_alias).get_or_create( + reg_perm, perm_created = perms_model.objects.using(db_alias).get_or_create( codename="manage_registration", name="allow or prevent user registration", content_type=content_type, ) - _, admin_perm_created = perms_model.objects.using(db_alias).get_or_create( + admin_perm, admin_perm_created = perms_model.objects.using(db_alias).get_or_create( codename="system_administration", name="technical controls", content_type=content_type, @@ -47,6 +47,11 @@ def create_groups_and_perms(apps, schema_editor): perms_model.objects.using(db_alias).filter(codename__in=perms).all() ) + # also extend these perms to admins + admin_group = group_model.objects.using(db_alias).get(name="admin") + admin_group.permissions.add(reg_perm) + admin_group.permissions.add(admin_perm) + class Migration(migrations.Migration): From b8e403ce59ba26bdb7d0cabf2eee2d48eb86e24d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 5 Dec 2022 17:04:47 -0800 Subject: [PATCH 05/12] Fixes migration to give the correct perms --- bookwyrm/migrations/0168_auto_20221205_2331.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bookwyrm/migrations/0168_auto_20221205_2331.py b/bookwyrm/migrations/0168_auto_20221205_2331.py index 796339a4f..47dd1c9a8 100644 --- a/bookwyrm/migrations/0168_auto_20221205_2331.py +++ b/bookwyrm/migrations/0168_auto_20221205_2331.py @@ -31,10 +31,8 @@ def create_groups_and_perms(apps, schema_editor): ) # Add perms to the group if anything was created - if group_created or perm_created or admin_perm_created or True: + if group_created or perm_created or admin_perm_created: perms = [ - "manage_registration", - "system_administration", "edit_instance_settings", "set_user_group", "control_federation", From a2874bf46052f63566debd78aeee0fe19b02c320 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 5 Dec 2022 17:09:10 -0800 Subject: [PATCH 06/12] Updates forms --- bookwyrm/templates/settings/registration.html | 24 +++++++++---------- .../settings/registration_limited.html | 6 +++++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/bookwyrm/templates/settings/registration.html b/bookwyrm/templates/settings/registration.html index 5ec7004da..6126f6b92 100644 --- a/bookwyrm/templates/settings/registration.html +++ b/bookwyrm/templates/settings/registration.html @@ -51,28 +51,28 @@ {% trans "Allow invite requests" %} +
    + + {{ form.invite_request_text }} + + {% include 'snippets/form_errors.html' with errors_list=form.invite_request_text.errors id="desc_invite_request_text" %} +
    -
    - -
    +
    + +
    {{ form.registration_closed_text }}
    -
    - - {{ form.invite_request_text }} - - {% include 'snippets/form_errors.html' with errors_list=form.invite_request_text.errors id="desc_invite_request_text" %} -
    diff --git a/bookwyrm/templates/settings/registration_limited.html b/bookwyrm/templates/settings/registration_limited.html index 1479e7d54..343afefbb 100644 --- a/bookwyrm/templates/settings/registration_limited.html +++ b/bookwyrm/templates/settings/registration_limited.html @@ -56,6 +56,10 @@ {{ form.invite_question_text }} + {% else %} + + + {% endif %} {% if not site.allow_invite_requests and not site.allow_registration %} @@ -63,6 +67,8 @@ {{ form.registration_closed_text }} + {% else %} + {% endif %} From 845bd2cc0da19092534add06d2d46970bba8ce88 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 5 Dec 2022 17:11:15 -0800 Subject: [PATCH 07/12] Only show themes to sys admin --- bookwyrm/templates/settings/layout.html | 2 ++ bookwyrm/views/admin/themes.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/settings/layout.html b/bookwyrm/templates/settings/layout.html index 274777b4c..7e3007785 100644 --- a/bookwyrm/templates/settings/layout.html +++ b/bookwyrm/templates/settings/layout.html @@ -110,10 +110,12 @@ {% trans "Registration" %} {% endif %}
  • + {% if perms.bookwyrm.system_administration %}
  • {% url 'settings-themes' as url %} {% trans "Themes" %}
  • + {% endif %} {% endif %} diff --git a/bookwyrm/views/admin/themes.py b/bookwyrm/views/admin/themes.py index 4d795fbe0..5658d243a 100644 --- a/bookwyrm/views/admin/themes.py +++ b/bookwyrm/views/admin/themes.py @@ -12,7 +12,7 @@ from bookwyrm import forms, models # pylint: disable= no-self-use @method_decorator(login_required, name="dispatch") @method_decorator( - permission_required("bookwyrm.edit_instance_settings", raise_exception=True), + permission_required("bookwyrm.system_administration", raise_exception=True), name="dispatch", ) class Themes(View): @@ -46,7 +46,7 @@ def get_view_data(): @require_POST -@permission_required("bookwyrm.edit_instance_settings", raise_exception=True) +@permission_required("bookwyrm.system_administration", raise_exception=True) # pylint: disable=unused-argument def delete_theme(request, theme_id): """Remove a theme""" From fdaa24edfe8861b77408f14ebb78a59c018593eb Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 5 Dec 2022 17:33:40 -0800 Subject: [PATCH 08/12] Tweaks group query in migration for tests --- bookwyrm/migrations/0168_auto_20221205_2331.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bookwyrm/migrations/0168_auto_20221205_2331.py b/bookwyrm/migrations/0168_auto_20221205_2331.py index 47dd1c9a8..901ca56f0 100644 --- a/bookwyrm/migrations/0168_auto_20221205_2331.py +++ b/bookwyrm/migrations/0168_auto_20221205_2331.py @@ -46,7 +46,8 @@ def create_groups_and_perms(apps, schema_editor): ) # also extend these perms to admins - admin_group = group_model.objects.using(db_alias).get(name="admin") + # This is get or create so the tests don't fail -- it should already exist + admin_group, _ = group_model.objects.using(db_alias).get_or_create(name="admin") admin_group.permissions.add(reg_perm) admin_group.permissions.add(admin_perm) From f779c57f33763698e86f0f99341ad461d91073aa Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 6 Dec 2022 14:25:50 -0800 Subject: [PATCH 09/12] Safely get or create permissions for tests/re-running --- bookwyrm/management/commands/initdb.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bookwyrm/management/commands/initdb.py b/bookwyrm/management/commands/initdb.py index 4b43fac7c..fda40bd07 100644 --- a/bookwyrm/management/commands/initdb.py +++ b/bookwyrm/management/commands/initdb.py @@ -10,7 +10,7 @@ def init_groups(): """permission levels""" groups = ["admin", "owner", "moderator", "editor"] for group in groups: - Group.objects.create(name=group) + Group.objects.get_or_create(name=group) def init_permissions(): @@ -18,7 +18,7 @@ def init_permissions(): permissions = [ { "codename": "manage_registration", - "name": "allow or prevent user registrations", + "name": "allow or prevent user registration", "groups": ["admin"], }, { @@ -65,7 +65,7 @@ def init_permissions(): content_type = ContentType.objects.get_for_model(models.User) for permission in permissions: - permission_obj = Permission.objects.create( + permission_obj, _ = Permission.objects.get_or_create( codename=permission["codename"], name=permission["name"], content_type=content_type, From a25a5b1032075a5d63d780d6d1b5ed10beefb718 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 11 Dec 2022 11:35:48 -0800 Subject: [PATCH 10/12] Updates expected number of groups in tests --- bookwyrm/tests/management/test_initdb.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bookwyrm/tests/management/test_initdb.py b/bookwyrm/tests/management/test_initdb.py index a00c6d674..229009a55 100644 --- a/bookwyrm/tests/management/test_initdb.py +++ b/bookwyrm/tests/management/test_initdb.py @@ -12,7 +12,7 @@ class InitDB(TestCase): def test_init_groups(self): """Create groups""" initdb.init_groups() - self.assertEqual(Group.objects.count(), 3) + self.assertEqual(Group.objects.count(), 4) self.assertTrue(Group.objects.filter(name="admin").exists()) self.assertTrue(Group.objects.filter(name="moderator").exists()) self.assertTrue(Group.objects.filter(name="editor").exists()) @@ -87,7 +87,7 @@ class InitDB(TestCase): command.handle() # everything should have been called - self.assertEqual(Group.objects.count(), 3) + self.assertEqual(Group.objects.count(), 4) self.assertTrue(Permission.objects.exists()) self.assertEqual(models.Connector.objects.count(), 3) self.assertEqual(models.SiteSettings.objects.count(), 1) @@ -99,7 +99,7 @@ class InitDB(TestCase): command.handle(limit="group") # everything should have been called - self.assertEqual(Group.objects.count(), 3) + self.assertEqual(Group.objects.count(), 4) self.assertEqual(models.Connector.objects.count(), 0) self.assertEqual(models.SiteSettings.objects.count(), 0) self.assertEqual(models.LinkDomain.objects.count(), 0) From 4f0e7b60d6e584d288bc55b9951014d54f8df9a8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 11 Dec 2022 12:01:30 -0800 Subject: [PATCH 11/12] Adds merge migration --- ...68_auto_20221205_2331_0169_auto_20221206_0902.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 bookwyrm/migrations/0170_merge_0168_auto_20221205_2331_0169_auto_20221206_0902.py diff --git a/bookwyrm/migrations/0170_merge_0168_auto_20221205_2331_0169_auto_20221206_0902.py b/bookwyrm/migrations/0170_merge_0168_auto_20221205_2331_0169_auto_20221206_0902.py new file mode 100644 index 000000000..3e199b014 --- /dev/null +++ b/bookwyrm/migrations/0170_merge_0168_auto_20221205_2331_0169_auto_20221206_0902.py @@ -0,0 +1,13 @@ +# Generated by Django 3.2.16 on 2022-12-11 20:00 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0168_auto_20221205_2331"), + ("bookwyrm", "0169_auto_20221206_0902"), + ] + + operations = [] From 3e62cbe8b6aefa79f21b32e23355673eb4fe4c52 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 11 Dec 2022 12:39:33 -0800 Subject: [PATCH 12/12] Fixes incorrect import from merge --- bookwyrm/views/admin/site.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/views/admin/site.py b/bookwyrm/views/admin/site.py index e0db708f1..4b0a9c7d8 100644 --- a/bookwyrm/views/admin/site.py +++ b/bookwyrm/views/admin/site.py @@ -4,7 +4,7 @@ from django.template.response import TemplateResponse from django.utils.decorators import method_decorator from django.views import View -from bookwyrm import emailing, forms, models +from bookwyrm import forms, models # pylint: disable= no-self-use