from django.db.models.signals import post_save from django.dispatch import receiver from apps.moments.models import Comment, Reaction from .models import Notification @receiver(post_save, sender=Reaction) def notify_on_reaction(sender, instance, created, **kwargs): if not created: return moment = instance.moment if instance.user_id == moment.owner_id: return Notification.objects.create( recipient_id=moment.owner_id, actor=instance.user, verb=Notification.Verb.LIKE, moment=moment, ) @receiver(post_save, sender=Comment) def notify_on_comment(sender, instance, created, **kwargs): if not created: return moment = instance.moment if instance.parent_id is None: if instance.author_id != moment.owner_id: Notification.objects.create( recipient_id=moment.owner_id, actor=instance.author, verb=Notification.Verb.COMMENT, moment=moment, comment=instance, ) return parent_author_id = instance.parent.author_id if instance.author_id != parent_author_id: Notification.objects.create( recipient_id=parent_author_id, actor=instance.author, verb=Notification.Verb.REPLY, moment=moment, comment=instance, )