Files
RasadDam_Backend/apps/authorization/signals.py

28 lines
760 B
Python

from django.db.models import Sum
from apps.authorization.models import Role, UserRelations
from django.db.models.signals import post_save, post_delete
from django.dispatch import receiver
@receiver([post_save], sender=UserRelations)
def sync_role_permissions(sender, instance, **kwargs):
""" add role permissions to user relation permissions in is null """
# if _from_signal=True prevent from maximum recursion loop
if getattr(instance, '_from_signal', False):
return
if instance.role:
permissions = instance.role.permissions.all()
if not instance.permissions.exists():
instance.permissions.add(*permissions) # noqa
print(instance.permissions)
instance._from_signal = True
instance.save()