Use signal for creating group invite notification

This commit is contained in:
Mouse Reeve 2022-07-04 20:24:29 -07:00
parent 03f5a3f2c1
commit aeefd5a3e9
2 changed files with 16 additions and 13 deletions

View file

@ -140,15 +140,6 @@ class GroupMemberInvitation(models.Model):
# make an invitation # make an invitation
super().save(*args, **kwargs) super().save(*args, **kwargs)
# now send the invite
model = apps.get_model("bookwyrm.Notification", require_ready=True)
model.notify(
self.user,
self.group.user,
related_group=self.group,
notification_type="INVITE",
)
@transaction.atomic @transaction.atomic
def accept(self): def accept(self):
"""turn this request into the real deal""" """turn this request into the real deal"""
@ -160,7 +151,7 @@ class GroupMemberInvitation(models.Model):
self.group.user, self.group.user,
self.user, self.user,
related_group=self.group, related_group=self.group,
notification_type="ACCEPT", notification_type=model.ACCEPT,
) )
# let the other members know about it # let the other members know about it
@ -171,10 +162,9 @@ class GroupMemberInvitation(models.Model):
member, member,
self.user, self.user,
related_group=self.group, related_group=self.group,
notification_type="JOIN", notification_type=model.JOIN,
) )
def reject(self): def reject(self):
"""generate a Reject for this membership request""" """generate a Reject for this membership request"""
self.delete() self.delete()

View file

@ -2,7 +2,7 @@
from django.db import models, transaction from django.db import models, transaction
from django.dispatch import receiver from django.dispatch import receiver
from .base_model import BookWyrmModel from .base_model import BookWyrmModel
from . import Boost, Favorite, ImportJob, Report, Status, User from . import Boost, Favorite, GroupMemberInvitation, ImportJob, Report, Status, User
class Notification(BookWyrmModel): class Notification(BookWyrmModel):
@ -205,3 +205,16 @@ def notify_admins_on_report(sender, instance, *args, **kwargs):
unread=True, unread=True,
) )
notification.related_reports.add(instance) notification.related_reports.add(instance)
@receiver(models.signals.post_save, sender=GroupMemberInvitation)
@transaction.atomic
# pylint: disable=unused-argument
def notify_user_on_group_invite(sender, instance, *args, **kwargs):
"""Cool kids club here we come"""
Notification.notify(
instance.user,
instance.group.user,
related_group=instance.group,
notification_type=Notification.INVITE,
)