from django.db.models.signals import post_save, pre_delete, m2m_changed from django.contrib.auth.models import User, Group from django.dispatch import receiver from .models import Profile, Agency, AgencyGroup from django.contrib.auth.models import Permission # SIGNALS FOR USER @receiver(post_save, sender=User) def create_profile(sender, instance, created, **kwargs): if created: Profile.objects.create(user=instance, agency=instance.agency, parent=instance.parent) ''' Wenn ein neuer Nutzer angelegt wird und dies der erste der Agentur ist, erhält dieser automatisch alle verfügbaren Rechte! ''' user_agency = User.objects.filter(profile__agency__pk=instance.agency.pk) if len(user_agency) == 1: tempuser = user_agency[0] temprof = Profile for ele in temprof._meta.permissions: tempperm = Permission.objects.get(codename=ele[0]) tempuser.user_permissions.add(tempperm) #tempuser.profile.func = 'lead' tempuser.save() @receiver(post_save, sender=User) def save_profile(sender, instance, **kwargs): instance.profile.save() # SIGNALS FOR GROUPS @receiver(signal=m2m_changed, sender=User.groups.through) def adjust_group_notifications(instance, action, reverse, model, pk_set, using, *args, **kwargs): # USERGROUP IS CHANGED if isinstance(instance, Group): group_touched = AgencyGroup.objects.get(group=instance) user_touched = User.objects.get(pk=list(pk_set)[0]) # A USER WAS REMOVED FROM A GROUP if(action == 'post_remove'): print("USER REMOVED " + user_touched.first_name + " FROM GROUP " + group_touched.agencygroupname) # A USER WAS ADDED TO A GROUP elif(action == 'post_add'): print("USER ADDED " + user_touched.first_name + " TO GROUP " + group_touched.agencygroupname)