From d9e65aa3638c4a78c23c34e93359e4c03e58ce7a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 10 Feb 2021 16:06:50 -0800 Subject: [PATCH] Notifications for follow requests --- bookwyrm/incoming.py | 9 +-------- bookwyrm/models/relationship.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 8 deletions(-) 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'''