From 27d99a009412a2b48ebf063f1ba03b5bdd50f714 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 5 Nov 2023 19:47:32 -0800 Subject: [PATCH] Removes failsafe that was overzealous --- bookwyrm/models/user.py | 18 ++++++------------ .../tests/views/inbox/test_inbox_delete.py | 4 +++- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index b9e9ae486..19006f772 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -8,7 +8,7 @@ from django.contrib.auth.models import AbstractUser from django.contrib.postgres.fields import ArrayField, CICharField from django.core.exceptions import PermissionDenied, ObjectDoesNotExist from django.dispatch import receiver -from django.db import models, transaction, IntegrityError +from django.db import models, transaction from django.utils import timezone from django.utils.translation import gettext_lazy as _ from model_utils import FieldTracker @@ -268,7 +268,10 @@ class User(OrderedCollectionPageMixin, AbstractUser): """a list of users who are permanently deleted""" return cls.objects.filter( is_active=False, - deactivation_reason__in=["self_deletion", "moderator_deletion"], + deactivation_reason__in=[ + "self_deletion", + "moderator_deletion", + ], ).distinct() def update_active_date(self): @@ -416,10 +419,6 @@ class User(OrderedCollectionPageMixin, AbstractUser): def erase_user_data(self): """Wipe a user's custom data""" - if not self.is_permanently_deleted: - raise IntegrityError( - "Attempted to delete user data for improperly deleted user" - ) # mangle email address self.email = f"{uuid4()}@deleted.user" @@ -432,12 +431,6 @@ class User(OrderedCollectionPageMixin, AbstractUser): def erase_user_statuses(self, broadcast=True): """Wipe the data on all the user's statuses""" - # safety valve: make sure the user is deleted - if not self.is_permanently_deleted: - raise IntegrityError( - "Attempted to delete statuses for improperly deleted user" - ) - for status in self.status_set.all(): status.delete(broadcast=broadcast) @@ -447,6 +440,7 @@ class User(OrderedCollectionPageMixin, AbstractUser): return not self.is_active and self.deactivation_reason in [ "self_deletion", "moderator_deletion", + "activitypub_deletion", ] def deactivate(self): diff --git a/bookwyrm/tests/views/inbox/test_inbox_delete.py b/bookwyrm/tests/views/inbox/test_inbox_delete.py index 0fb108e22..7b4c12564 100644 --- a/bookwyrm/tests/views/inbox/test_inbox_delete.py +++ b/bookwyrm/tests/views/inbox/test_inbox_delete.py @@ -11,6 +11,7 @@ from bookwyrm import models, views class InboxActivities(TestCase): """inbox tests""" + # pylint: disable=invalid-name def setUp(self): """basic user and book data""" with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( @@ -97,7 +98,8 @@ class InboxActivities(TestCase): self.assertEqual(models.Notification.objects.get(), notif) @patch("bookwyrm.suggested_users.remove_user_task.delay") - def test_delete_user(self, _): + @patch("bookwyrm.activitystreams.remove_status_task.delay") + def test_delete_user(self, *_): """delete a user""" self.assertTrue(models.User.objects.get(username="rat@example.com").is_active) activity = {