From 014b97003013f2e3817adb45c5ae7693818fb28e Mon Sep 17 00:00:00 2001 From: Akita Noek Date: Wed, 27 Jan 2016 14:58:50 -0500 Subject: [PATCH] Automatically rebuild our role hierarchy when our m2m map is updated --- awx/main/models/rbac.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/awx/main/models/rbac.py b/awx/main/models/rbac.py index 5d7226a73e..2ec6ac0c3b 100644 --- a/awx/main/models/rbac.py +++ b/awx/main/models/rbac.py @@ -7,17 +7,21 @@ import logging # Django from django.db import models from django.utils.translation import ugettext_lazy as _ +from django.db.models.signals import pre_save, post_save, pre_delete, post_delete, m2m_changed # AWX from awx.main.models.base import * # noqa from awx.main.fields import * # noqa -__all__ = ['Role', 'RolePermission', 'Resource'] +__all__ = ['Role', 'RolePermission', 'Resource', 'RoleHierarchy', 'ResourceHierarchy'] logger = logging.getLogger('awx.main.models.rbac') +def rebuild_role_hierarchy_cache(sender, **kwargs): + kwargs['instance'].rebuild_role_hierarchy_cache() + class Role(CommonModelNameNotUnique): ''' Role model @@ -56,6 +60,8 @@ class Role(CommonModelNameNotUnique): for child in self.children.all(): child.rebuild_role_hierarchy_cache() +m2m_changed.connect(rebuild_role_hierarchy_cache, Role.parents.through) + class RoleHierarchy(CreatedModifiedModel): '''