Skip to content

Commit f84e04b

Browse files
committed
Improve logging and code cleanup
1 parent 564bad3 commit f84e04b

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

ansible_base/rbac/migrations/_utils.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def cleanup_orphaned_permissions(apps):
5656
"""
5757
Delete orphaned DABPermission objects for models no longer in the permission registry.
5858
59-
This is used during migrations to clean up permissions that were auto-created for models
59+
This is used during migrations to clean up permissions for any previously-registered model
6060
that are no longer tracked by RBAC, but only if they are not referenced by any RoleDefinition.
6161
6262
Args:
@@ -82,8 +82,17 @@ def cleanup_orphaned_permissions(apps):
8282
model_key = (permission.content_type.app_label, permission.content_type.model)
8383
if model_key not in registered_model_keys:
8484
# Check if this permission is referenced by any RoleDefinition
85-
is_referenced = role_definition_cls.objects.filter(permissions=permission).exists()
86-
if not is_referenced:
85+
referencing_roles = role_definition_cls.objects.filter(permissions=permission)
86+
if referencing_roles.exists():
87+
# Log warning for unregistered model still referenced by role definitions
88+
role_names = list(referencing_roles.values_list('name', flat=True))
89+
logger.warning(
90+
f'Permission {permission.codename} for unregistered model '
91+
f'{permission.content_type.app_label}.{permission.content_type.model} '
92+
f'is still referenced by role definitions: {role_names}'
93+
)
94+
else:
95+
logger.info(f'Deleting orphaned permission {permission.codename} for unregistered model {model_key}')
8796
orphaned_permissions.append(permission)
8897

8998
# Delete orphaned permissions
@@ -107,12 +116,12 @@ def migrate_content_type(apps, schema_editor):
107116
apps: Django apps registry (from migration context)
108117
schema_editor: Django schema editor (unused but required for migration signature)
109118
"""
110-
ct_cls = apps.get_model('dab_rbac', 'DABContentType')
111-
ct_cls.objects.clear_cache()
112-
113119
# Pre-check: Delete orphaned DABPermission objects before migration
114120
cleanup_orphaned_permissions(apps)
115121

122+
ct_cls = apps.get_model('dab_rbac', 'DABContentType')
123+
ct_cls.objects.clear_cache()
124+
116125
for model_name in ('dabpermission', 'objectrole', 'roledefinition', 'roleuserassignment', 'roleteamassignment'):
117126
cls = apps.get_model('dab_rbac', model_name)
118127
update_ct = 0

0 commit comments

Comments
 (0)