agent/authentic2: handle signals for soft creation/deletion of roles relations (#63199)
This commit is contained in:
parent
577438f7fa
commit
7f10b9a2c8
|
@ -17,6 +17,7 @@
|
|||
from django.apps import AppConfig
|
||||
from django.conf import settings
|
||||
from django.db.models.signals import m2m_changed, post_save, pre_delete, pre_save
|
||||
from django_rbac.signals import post_soft_create, post_soft_delete
|
||||
|
||||
|
||||
class Plugin:
|
||||
|
@ -45,6 +46,8 @@ class Authentic2AgentConfig(AppConfig):
|
|||
post_save.connect(engine.post_save)
|
||||
pre_delete.connect(engine.pre_delete)
|
||||
m2m_changed.connect(engine.m2m_changed)
|
||||
post_soft_create.connect(engine.post_soft_create)
|
||||
post_soft_delete.connect(engine.post_soft_delete)
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
|
|
|
@ -205,7 +205,7 @@ class Provisionning(threading.local):
|
|||
roles = dict((r.id, r) for r in all_roles)
|
||||
user_roles = {}
|
||||
parents = {}
|
||||
for rp in RoleParenting.objects.all():
|
||||
for rp in RoleParenting.objects.filter(deleted__isnull=True):
|
||||
# broken parent/child relationship can happen
|
||||
try:
|
||||
parents.setdefault(rp.child.id, []).append(rp.parent.id)
|
||||
|
@ -490,6 +490,14 @@ class Provisionning(threading.local):
|
|||
for other_instance in instance.members.all():
|
||||
self.add_saved(other_instance)
|
||||
|
||||
def post_soft_create(self, sender, instance, **kwargs):
|
||||
if isinstance(instance, RoleParenting):
|
||||
self.add_saved(*list(instance.child.all_members()))
|
||||
|
||||
def post_soft_delete(self, sender, instance, **kwargs):
|
||||
if isinstance(instance, RoleParenting):
|
||||
self.add_saved(*list(instance.child.all_members()))
|
||||
|
||||
def notify_agents(self, data, sync=False):
|
||||
log_path = getattr(settings, 'DEBUG_PROVISIONNING_LOG_PATH', '')
|
||||
if log_path and getattr(settings, 'HOBO_PROVISIONNING_DEBUG', False):
|
||||
|
|
Loading…
Reference in New Issue