Source code for pizzas.signals
"""The signals checked by the pizzas package"""
from django.db.models.signals import post_save, post_delete, pre_delete, pre_save
from utils.models.signals import suspendingreceiver
[docs]@suspendingreceiver(
post_save,
sender="events.EventRegistration",
dispatch_uid="pizzas_registration_save",
)
def post_registration_save(sender, instance, **kwargs):
"""Update members on pizza reminder notification"""
event = instance.event
if (
event.is_pizza_event()
and event.pizzaevent.send_notification
and instance.member is not None
):
if instance.date_cancelled:
event.pizzaevent.end_reminder.users.remove(instance.member)
else:
event.pizzaevent.end_reminder.users.add(instance.member)
[docs]@suspendingreceiver(pre_save, sender="pizzas.Order", dispatch_uid="pizzas_order_save")
def pre_order_save(sender, instance, **kwargs):
"""Remove user from the order reminder when saved"""
if (
not instance.pk
and instance.pizza_event.end_reminder
and not instance.pizza_event.end_reminder.sent
):
instance.pizza_event.end_reminder.users.remove(instance.member)
[docs]@suspendingreceiver(
pre_delete, sender="pizzas.Order", dispatch_uid="pizzas_order_delete"
)
def pre_order_delete(sender, instance, **kwargs):
"""Re-add user to reminder to on order deletion"""
if instance.pizza_event.end_reminder and not instance.pizza_event.end_reminder.sent:
instance.pizza_event.end_reminder.users.add(instance.member)