diff --git a/bookwyrm/incoming.py b/bookwyrm/incoming.py index a7ada52e..a88a748e 100644 --- a/bookwyrm/incoming.py +++ b/bookwyrm/incoming.py @@ -136,14 +136,7 @@ def handle_follow(activity): ) # send the accept normally for a duplicate request - manually_approves = relationship.user_object.manually_approves_followers - - status_builder.create_notification( - relationship.user_object, - 'FOLLOW_REQUEST' if manually_approves else 'FOLLOW', - related_user=relationship.user_subject - ) - if not manually_approves: + if not relationship.user_object.manually_approves_followers: relationship.accept() diff --git a/bookwyrm/models/relationship.py b/bookwyrm/models/relationship.py index 9f3bf07d..ac8f8286 100644 --- a/bookwyrm/models/relationship.py +++ b/bookwyrm/models/relationship.py @@ -1,4 +1,5 @@ ''' defines relationships between users ''' +from django.apps import apps from django.db import models, transaction from django.db.models import Q from django.dispatch import receiver @@ -90,9 +91,20 @@ class UserFollowRequest(ActivitypubMixin, UserRelationship): return None except (UserFollows.DoesNotExist, UserBlocks.DoesNotExist): super().save(*args, **kwargs) + if broadcast and self.user_subject.local and not self.user_object.local: self.broadcast(self.to_activity(), self.user_subject) + if self.user_object.local: + model = apps.get_model('bookwyrm.Notification', require_ready=True) + notification_type = 'FOLLOW_REQUEST' \ + if self.user_object.manually_approves_followers else 'FOLLOW' + model.objects.create( + user=self.user_object, + related_user=self.user_subject, + notification_type=notification_type, + ) + def accept(self): ''' turn this request into the real deal'''