Skip to content

Commit 564bad3

Browse files
committed
consolidate migration logic
1 parent 843ab5c commit 564bad3

File tree

2 files changed

+14
-28
lines changed

2 files changed

+14
-28
lines changed
Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,17 @@
11
# Generated by Django 4.2.23 on 2025-06-30 12:48
22

3-
import logging
4-
53
from django.db import migrations
64

75
from . import _utils
86

97

10-
logger = logging.getLogger(__name__)
11-
12-
13-
def create_types_if_needed(apps, schema_editor):
14-
return _utils.create_types_if_needed(apps, schema_editor, logger)
15-
16-
17-
def migrate_content_type(apps, schema_editor):
18-
return _utils.migrate_content_type(apps, schema_editor, logger)
19-
20-
218
class Migration(migrations.Migration):
229

2310
dependencies = [
2411
('dab_rbac', '0004_remote_permissions_additions'),
2512
]
2613

2714
operations = [
28-
migrations.RunPython(create_types_if_needed, migrations.RunPython.noop),
29-
migrations.RunPython(migrate_content_type, migrations.RunPython.noop),
15+
migrations.RunPython(_utils.create_types_if_needed, migrations.RunPython.noop),
16+
migrations.RunPython(_utils.migrate_content_type, migrations.RunPython.noop),
3017
]

ansible_base/rbac/migrations/_utils.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Generated by Claude Sonnet 4 (claude-sonnet-4@20250514)
2+
import logging
3+
24
from django.db import models
35

6+
logger = logging.getLogger(__name__)
7+
48
# This method has moved, and this is put here temporarily to make branch management easier
59
from ansible_base.rbac.management import create_dab_permissions as create_custom_permissions # noqa
610

@@ -48,7 +52,7 @@ def give_permissions(apps, rd, users=(), teams=(), object_id=None, content_type_
4852
RoleTeamAssignment.objects.bulk_create(team_assignments, ignore_conflicts=True)
4953

5054

51-
def cleanup_orphaned_permissions(apps, logger=None):
55+
def cleanup_orphaned_permissions(apps):
5256
"""
5357
Delete orphaned DABPermission objects for models no longer in the permission registry.
5458
@@ -57,7 +61,6 @@ def cleanup_orphaned_permissions(apps, logger=None):
5761
5862
Args:
5963
apps: Django apps registry (from migration context)
60-
logger: Optional logger for reporting deleted permissions
6164
6265
Returns:
6366
int: Number of permissions deleted
@@ -88,13 +91,12 @@ def cleanup_orphaned_permissions(apps, logger=None):
8891
if orphaned_permissions:
8992
deleted_count = len(orphaned_permissions)
9093
permission_cls.objects.filter(id__in=[p.id for p in orphaned_permissions]).delete()
91-
if logger:
92-
logger.info(f'Deleted {deleted_count} orphaned DABPermission objects for unregistered models')
94+
logger.info(f'Deleted {deleted_count} orphaned DABPermission objects for unregistered models')
9395

9496
return deleted_count
9597

9698

97-
def migrate_content_type(apps, schema_editor, logger=None):
99+
def migrate_content_type(apps, schema_editor):
98100
"""
99101
Migrate content type references from Django ContentType to DABContentType.
100102
@@ -104,13 +106,12 @@ def migrate_content_type(apps, schema_editor, logger=None):
104106
Args:
105107
apps: Django apps registry (from migration context)
106108
schema_editor: Django schema editor (unused but required for migration signature)
107-
logger: Optional logger for reporting migration progress
108109
"""
109110
ct_cls = apps.get_model('dab_rbac', 'DABContentType')
110111
ct_cls.objects.clear_cache()
111112

112113
# Pre-check: Delete orphaned DABPermission objects before migration
113-
cleanup_orphaned_permissions(apps, logger)
114+
cleanup_orphaned_permissions(apps)
114115

115116
for model_name in ('dabpermission', 'objectrole', 'roledefinition', 'roleuserassignment', 'roleteamassignment'):
116117
cls = apps.get_model('dab_rbac', model_name)
@@ -127,7 +128,7 @@ def migrate_content_type(apps, schema_editor, logger=None):
127128
) from e
128129
obj.save()
129130
update_ct += 1
130-
if update_ct and logger:
131+
if update_ct:
131132
logger.info(f'Updated content_type reference to new model for {model_name} for {update_ct} entries')
132133
for model_name in ('roleevaluation', 'roleevaluationuuid'):
133134
cls = apps.get_model('dab_rbac', model_name)
@@ -141,11 +142,11 @@ def migrate_content_type(apps, schema_editor, logger=None):
141142
permission.api_slug = f'{permission.new_content_type.service}.{permission.codename}'
142143
permission.save()
143144
mod_ct += 1
144-
if mod_ct and logger:
145+
if mod_ct:
145146
logger.info(f'Set new field DABPermission.api_slug for {mod_ct} existing permissions')
146147

147148

148-
def create_types_if_needed(apps, schema_editor, logger=None):
149+
def create_types_if_needed(apps, schema_editor):
149150
"""
150151
Create DABContentType entries if needed before migration.
151152
@@ -156,13 +157,11 @@ def create_types_if_needed(apps, schema_editor, logger=None):
156157
Args:
157158
apps: Django apps registry (from migration context)
158159
schema_editor: Django schema editor (unused but required for migration signature)
159-
logger: Optional logger for reporting creation progress
160160
"""
161161
permission_cls = apps.get_model('dab_rbac', 'DABPermission')
162162
rd_cls = apps.get_model('dab_rbac', 'RoleDefinition')
163163
if permission_cls.objects.exists() or rd_cls.objects.exists():
164-
if logger:
165-
logger.info('Running DABContentType creation script as part of 0005 migration')
164+
logger.info('Running DABContentType creation script as part of 0005 migration')
166165
from ansible_base.rbac.management.create_types import create_DAB_contenttypes
167166

168167
create_DAB_contenttypes(apps=apps)

0 commit comments

Comments
 (0)