diff --git a/celerytask/signals.py b/celerytask/signals.py index da119885..d4ea2103 100644 --- a/celerytask/signals.py +++ b/celerytask/signals.py @@ -1,4 +1,6 @@ from django.db.models.signals import m2m_changed +from django.db.models.signals import post_save +from django.db.models.signals import post_delete from django.dispatch import receiver from django.contrib.auth.models import User import logging @@ -9,6 +11,7 @@ from .tasks import update_ipboard_groups from .tasks import update_discord_groups from .tasks import update_teamspeak3_groups from authentication.models import AuthServicesInfo +from services.models import AuthTS logger = logging.getLogger(__name__) @@ -30,3 +33,23 @@ def m2m_changed_user_groups(sender, instance, action, *args, **kwargs): update_discord_groups.delay(instance.pk) if auth.mumble_username: update_mumble_groups.delay(instance.pk) + +def trigger_all_ts_update(): + for auth in AuthServicesInfo.objects.filter(teamspeak3_uid__isnull=False): + update_teamspeak3_groups.delay(auth.user) + +@receiver(m2m_changed, sender=AuthTS.ts_group.through) +def m2m_changed_authts_group(sender, instance, action, *args, **kwargs): + logger.debug("Received m2m_changed from %s ts_group with action %s" % (instance, action)) + if action=="post_add" or action=="post_remove": + trigger_all_ts_update() + +@receiver(post_save, sender=AuthTS) +def post_save_authts(sender, instance, *args, **kwargs): + logger.debug("Received post_save from %s" % instance) + trigger_all_ts_update() + +@receiver(post_delete, sender=AuthTS) +def post_delete_authts(sender, instance, *args, **kwargs): + logger.debug("Received post_delete signal from %s" % instance) + trigger_all_ts_update()