diff --git a/awx/main/models/rbac.py b/awx/main/models/rbac.py index 19a926c667..af54858af0 100644 --- a/awx/main/models/rbac.py +++ b/awx/main/models/rbac.py @@ -7,7 +7,6 @@ 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 @@ -17,10 +16,6 @@ __all__ = ['Role', 'RolePermission', 'Resource', 'RoleHierarchy', 'ResourceHiera 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 @@ -80,9 +75,6 @@ class Role(CommonModelNameNotUnique): permission.save() -m2m_changed.connect(rebuild_role_hierarchy_cache, Role.parents.through) - - class RoleHierarchy(CreatedModifiedModel): ''' Stores a flattened relation map of all roles in the system for easy joining diff --git a/awx/main/signals.py b/awx/main/signals.py index 8b0c22ec9d..0b38ecccca 100644 --- a/awx/main/signals.py +++ b/awx/main/signals.py @@ -115,6 +115,9 @@ def store_initial_active_state(sender, **kwargs): else: instance._saved_active_state = True +def rebuild_role_hierarchy_cache(sender, **kwargs): + kwargs['instance'].rebuild_role_hierarchy_cache() + pre_save.connect(store_initial_active_state, sender=Host) post_save.connect(emit_update_inventory_on_created_or_deleted, sender=Host) post_delete.connect(emit_update_inventory_on_created_or_deleted, sender=Host) @@ -133,6 +136,8 @@ post_save.connect(emit_update_inventory_on_created_or_deleted, sender=Job) post_delete.connect(emit_update_inventory_on_created_or_deleted, sender=Job) post_save.connect(emit_job_event_detail, sender=JobEvent) post_save.connect(emit_ad_hoc_command_event_detail, sender=AdHocCommandEvent) +m2m_changed.connect(rebuild_role_hierarchy_cache, Role.parents.through) + # Migrate hosts, groups to parent group(s) whenever a group is deleted or # marked as inactive.