Source code for django_broadcaster.signals
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import OutboxEvent, OutboxEventStatus
from .registry import event_created, event_published, event_registry
[docs]
@receiver(post_save, sender=OutboxEvent)
def handle_outbox_event_signals(sender, instance, created, **kwargs):
"""Handle signals for outbox events"""
if created:
# Dispatch event created signal
event_created.send(sender=sender, event=instance)
# Handle event locally if handlers are registered
event_registry.handle_event(instance)
elif instance.status == OutboxEventStatus.PUBLISHED:
# Dispatch event published signal
event_published.send(sender=sender, event=instance)