summaryrefslogtreecommitdiff
path: root/ishtar_common/migrations/0255_migrate_delete_permissions.py
blob: 61b63c0df8dbbe0a99d69ec696db02613320bdc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 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)
    ]