29 lines
999 B
Python
29 lines
999 B
Python
from django.db.models.signals import post_save, pre_save
|
|
from django.dispatch import receiver
|
|
|
|
from .models import ProjectBrief
|
|
from .notifications import send_brief_status_email, send_new_brief_admin_email
|
|
|
|
|
|
@receiver(pre_save, sender=ProjectBrief)
|
|
def capture_previous_status(sender, instance, **kwargs):
|
|
if instance.pk:
|
|
try:
|
|
instance._previous_status = ProjectBrief.objects.values_list(
|
|
"status", flat=True
|
|
).get(pk=instance.pk)
|
|
except ProjectBrief.DoesNotExist:
|
|
instance._previous_status = None
|
|
else:
|
|
instance._previous_status = None
|
|
|
|
|
|
@receiver(post_save, sender=ProjectBrief)
|
|
def handle_brief_notifications(sender, instance, created, **kwargs):
|
|
if created:
|
|
send_new_brief_admin_email(instance)
|
|
return
|
|
previous_status = getattr(instance, "_previous_status", None)
|
|
if previous_status and previous_status != instance.status:
|
|
send_brief_status_email(instance, previous_status)
|