sync role permissions with main permission on signal

This commit is contained in:
2025-08-05 18:06:16 +03:30
parent e51a3a31aa
commit 0b53df4dfe
2 changed files with 30 additions and 0 deletions

View File

@@ -4,3 +4,6 @@ from django.apps import AppConfig
class AuthorizationConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'apps.authorization'
def ready(self):
import apps.authorization.signals

View File

@@ -0,0 +1,27 @@
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()