PonyConf/proposals/signals.py
Élie Bouttier a85995fd2e create Conversation on Site post_save
instead of post_migrate
2016-08-21 12:18:35 +02:00

32 lines
1.3 KiB
Python

from django.db.models.signals import m2m_changed, post_migrate, post_save
from django.dispatch import Signal, receiver
from django.contrib.sites.models import Site
from accounts.models import Participation
from .models import Conference, Talk, Topic
talk_added = Signal(providing_args=["sender", "instance", "author"])
talk_edited = Signal(providing_args=["sender", "instance", "author"])
@receiver(post_save, sender=Site, dispatch_uid="Create Conference for Site")
def create_conference(sender, instance, **kwargs):
Conference.objects.get_or_create(site=instance)
@receiver(m2m_changed, sender=Talk.speakers.through, dispatch_uid="Create Participation for speakers")
def create_participation_for_speakers(sender, instance, action, reverse, model, pk_set, using, **kwargs):
if action != "pre_add":
pass
for speaker in instance.speakers.all():
Participation.objects.get_or_create(user=speaker, site=instance.site)
@receiver(m2m_changed, sender=Topic.reviewers.through, dispatch_uid="Create Participation for reviewers")
def create_participation_for_reviewers(sender, instance, action, reverse, model, pk_set, using, **kwargs):
if action != "pre_add":
pass
for reviewer in instance.reviewers.all():
Participation.objects.get_or_create(user=reviewer, site=instance.site)