# Generated by Django 2.2.28 on 2024-11-04 16:52 from django.db import migrations def migrate_permission(apps, __): Permission = apps.get_model("auth", "permission") Group = apps.get_model("auth", "group") ProfileType = apps.get_model("ishtar_common", "profiletype") print() for modif_group in Group.objects.filter( name__endswith="modification/suppression").all(): name = modif_group.name.replace("/suppression", "") modif_group.name = name modif_group.save() delete_permissions = [] for permission in modif_group.permissions.filter( codename__startswith="change_").all(): codename = permission.codename.replace("change_", "delete_") try: delete_permission = Permission.objects.get( content_type=permission.content_type, codename=codename ) delete_permissions.append(delete_permission) if delete_permission in list(modif_group.permissions.all()): modif_group.permissions.remove(delete_permission) except Permission.DoesNotExist: print(f"Permission {codename} does not exist") if not delete_permissions: continue delete_group = Group.objects.create( name=name.replace("modification", "suppression") ) print(f"* New group: {delete_group.name}") for delete_permission in delete_permissions: delete_group.permissions.add(delete_permission) for profile_type in ProfileType.objects.filter(groups__pk=modif_group.pk).all(): profile_type.groups.add(delete_group) print(f"\t- profile type {profile_type.label} updated") class Migration(migrations.Migration): dependencies = [ ('ishtar_common', '0254_permissionrequests'), ] operations = [ migrations.RunPython(migrate_permission) ]