From 65f81bd5f0fb5c6075ba5bb39b008066c6ae11c3 Mon Sep 17 00:00:00 2001
From: Mouse Reeve <mousereeve@riseup.net>
Date: Mon, 15 Feb 2021 12:21:48 -0800
Subject: [PATCH] Moves blocking to save function

I just like these better than signals??
---
 bookwyrm/incoming.py            |  2 +-
 bookwyrm/models/relationship.py | 28 +++++++++++-----------------
 2 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/bookwyrm/incoming.py b/bookwyrm/incoming.py
index 562225e7..cb5baafc 100644
--- a/bookwyrm/incoming.py
+++ b/bookwyrm/incoming.py
@@ -195,7 +195,7 @@ def handle_block(activity):
     ''' blocking a user '''
     # create "block" databse entry
     activitypub.Block(**activity).to_model(models.UserBlocks)
-    # the removing relationships is handled in post-save hook in model
+    # the removing relationships is handled in model save
 
 
 @app.task
diff --git a/bookwyrm/models/relationship.py b/bookwyrm/models/relationship.py
index 9f3bf07d..6aaffae9 100644
--- a/bookwyrm/models/relationship.py
+++ b/bookwyrm/models/relationship.py
@@ -1,7 +1,6 @@
 ''' defines relationships between users '''
 from django.db import models, transaction
 from django.db.models import Q
-from django.dispatch import receiver
 
 from bookwyrm import activitypub
 from .activitypub_mixin import ActivitypubMixin, ActivityMixin
@@ -126,20 +125,15 @@ class UserBlocks(ActivityMixin, UserRelationship):
     status = 'blocks'
     activity_serializer = activitypub.Block
 
+    def save(self, *args, **kwargs):
+        ''' remove follow or follow request rels after a block is created '''
+        super().save(*args, **kwargs)
 
-@receiver(models.signals.post_save, sender=UserBlocks)
-#pylint: disable=unused-argument
-def execute_after_save(sender, instance, created, *args, **kwargs):
-    ''' remove follow or follow request rels after a block is created '''
-    UserFollows.objects.filter(
-        Q(user_subject=instance.user_subject,
-          user_object=instance.user_object) | \
-        Q(user_subject=instance.user_object,
-          user_object=instance.user_subject)
-    ).delete()
-    UserFollowRequest.objects.filter(
-        Q(user_subject=instance.user_subject,
-          user_object=instance.user_object) | \
-        Q(user_subject=instance.user_object,
-          user_object=instance.user_subject)
-    ).delete()
+        UserFollows.objects.filter(
+            Q(user_subject=self.user_subject, user_object=self.user_object) | \
+            Q(user_subject=self.user_object, user_object=self.user_subject)
+        ).delete()
+        UserFollowRequest.objects.filter(
+            Q(user_subject=self.user_subject, user_object=self.user_object) | \
+            Q(user_subject=self.user_object, user_object=self.user_subject)
+        ).delete()