Notifications for follow requests

This commit is contained in:
Mouse Reeve 2021-02-10 16:06:50 -08:00
parent ac57db5375
commit d9e65aa363
2 changed files with 13 additions and 8 deletions

View file

@ -136,14 +136,7 @@ def handle_follow(activity):
) )
# send the accept normally for a duplicate request # send the accept normally for a duplicate request
manually_approves = relationship.user_object.manually_approves_followers if not 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:
relationship.accept() relationship.accept()

View file

@ -1,4 +1,5 @@
''' defines relationships between users ''' ''' defines relationships between users '''
from django.apps import apps
from django.db import models, transaction from django.db import models, transaction
from django.db.models import Q from django.db.models import Q
from django.dispatch import receiver from django.dispatch import receiver
@ -90,9 +91,20 @@ class UserFollowRequest(ActivitypubMixin, UserRelationship):
return None return None
except (UserFollows.DoesNotExist, UserBlocks.DoesNotExist): except (UserFollows.DoesNotExist, UserBlocks.DoesNotExist):
super().save(*args, **kwargs) super().save(*args, **kwargs)
if broadcast and self.user_subject.local and not self.user_object.local: if broadcast and self.user_subject.local and not self.user_object.local:
self.broadcast(self.to_activity(), self.user_subject) 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): def accept(self):
''' turn this request into the real deal''' ''' turn this request into the real deal'''