diff --git a/bookwyrm/models/base_model.py b/bookwyrm/models/base_model.py index eeb2e940d..3ac220bc4 100644 --- a/bookwyrm/models/base_model.py +++ b/bookwyrm/models/base_model.py @@ -132,7 +132,7 @@ class BookWyrmModel(models.Model): return # but generally moderators can delete other people's stuff - if self.user == viewer or viewer.has_perm("moderate_post"): + if self.user == viewer or viewer.has_perm("bookwyrm.moderate_post"): return raise PermissionDenied() diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 0e4148ddd..56b096bc2 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -84,7 +84,7 @@ class LinkDomain(BookWyrmModel): ) def raise_not_editable(self, viewer): - if viewer.has_perm("moderate_post"): + if viewer.has_perm("bookwyrm.moderate_post"): return raise PermissionDenied() diff --git a/bookwyrm/models/notification.py b/bookwyrm/models/notification.py index 21a992b07..818c7bd05 100644 --- a/bookwyrm/models/notification.py +++ b/bookwyrm/models/notification.py @@ -222,8 +222,12 @@ def notify_user_on_import_complete( @receiver(models.signals.post_save, sender=Report) @transaction.atomic # pylint: disable=unused-argument -def notify_admins_on_report(sender, instance, *args, **kwargs): +def notify_admins_on_report(sender, instance, created, *args, **kwargs): """something is up, make sure the admins know""" + if not created: + # otherwise you'll get a notification when you resolve a report + return + # moderators and superusers should be notified admins = User.objects.filter( models.Q(user_permissions__name__in=["moderate_user", "moderate_post"]) diff --git a/bookwyrm/views/admin/link_domains.py b/bookwyrm/views/admin/link_domains.py index 5f9ec6c06..0b8674170 100644 --- a/bookwyrm/views/admin/link_domains.py +++ b/bookwyrm/views/admin/link_domains.py @@ -45,6 +45,7 @@ class LinkDomain(View): @require_POST @login_required +@permission_required("bookwyrm.moderate_user") def update_domain_status(request, domain_id, status): """This domain seems fine""" domain = get_object_or_404(models.LinkDomain, id=domain_id) diff --git a/bookwyrm/views/admin/reports.py b/bookwyrm/views/admin/reports.py index c19e3db4a..a0b222ebe 100644 --- a/bookwyrm/views/admin/reports.py +++ b/bookwyrm/views/admin/reports.py @@ -83,7 +83,7 @@ class ReportAdmin(View): @login_required -@permission_required("bookwyrm_moderate_user") +@permission_required("bookwyrm.moderate_user") def suspend_user(_, user_id): """mark an account as inactive""" user = get_object_or_404(models.User, id=user_id) @@ -95,7 +95,7 @@ def suspend_user(_, user_id): @login_required -@permission_required("bookwyrm_moderate_user") +@permission_required("bookwyrm.moderate_user") def unsuspend_user(_, user_id): """mark an account as inactive""" user = get_object_or_404(models.User, id=user_id) @@ -107,7 +107,7 @@ def unsuspend_user(_, user_id): @login_required -@permission_required("bookwyrm_moderate_user") +@permission_required("bookwyrm.moderate_user") def moderator_delete_user(request, user_id): """permanently delete a user""" user = get_object_or_404(models.User, id=user_id) @@ -132,7 +132,7 @@ def moderator_delete_user(request, user_id): @login_required -@permission_required("bookwyrm_moderate_post") +@permission_required("bookwyrm.moderate_post") def resolve_report(_, report_id): """mark a report as (un)resolved""" report = get_object_or_404(models.Report, id=report_id) diff --git a/bookwyrm/views/admin/user_admin.py b/bookwyrm/views/admin/user_admin.py index 298d84ec2..aba665d2f 100644 --- a/bookwyrm/views/admin/user_admin.py +++ b/bookwyrm/views/admin/user_admin.py @@ -62,7 +62,7 @@ class UserAdminList(View): @method_decorator(login_required, name="dispatch") @method_decorator( - permission_required("bookwyrm.moderate_users", raise_exception=True), + permission_required("bookwyrm.moderate_user", raise_exception=True), name="dispatch", ) class UserAdmin(View):