sync role permissions with main permission on signal
This commit is contained in:
@@ -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
|
||||
|
||||
27
apps/authorization/signals.py
Normal file
27
apps/authorization/signals.py
Normal 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()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user