# Generated by Django 2.2.24 on 2023-09-18 17:05 from django.db import migrations COLOR_WARNING = "\033[93m" COLOR_ENDC = "\033[0m" EXCLUDE_LIST = [ "-", "auto_external_id", "spatial_reference_system", "public_domain", ] FULL_COPY_LIST = [ "scientist__attached_to", ] GROUPS = [ [ "Imports : lecture", "view_import", "ishtar_common", "import" ], [ "Imports rattachés : lecture", "view_own_import", "ishtar_common", "import" ], [ "Imports : modification", "change_import", "ishtar_common", "import" ], [ "Imports rattachés : modification", "change_own_import", "ishtar_common", "import" ], [ "Imports : suppression", "delete_import", "ishtar_common", "import" ], [ "Imports rattachés : suppression", "delete_own_import", "ishtar_common", "import" ], [ "Imports : ajout", "add_import", "ishtar_common", "import" ], [ "Imports rattachés : ajout", "add_own_import", "ishtar_common", "import" ], ] def migrate(apps, __): ImporterDefault = apps.get_model('ishtar_common', 'ImporterDefault') for default in ImporterDefault.objects.all(): if default.target not in EXCLUDE_LIST: req = default.target if req not in FULL_COPY_LIST: req = req.split("__")[0] if req.endswith("_type") or req.endswith("_types"): continue default.required_fields = req default.save() print("") ProfileType = apps.get_model('ishtar_common', 'ProfileType') q = ProfileType.objects.filter(txt_idx="administrator") administrator = None if not q.count(): print(COLOR_WARNING + "** No administrator profile found. **" + COLOR_ENDC) else: administrator = q.all()[0] Permission = apps.get_model("auth", "Permission") Group = apps.get_model("auth", "Group") ContentType = apps.get_model("contenttypes", "ContentType") for name, codename, app, model in GROUPS: ct, __ = ContentType.objects.get_or_create(app_label=app, model=model) perm, __ = Permission.objects.get_or_create( codename=codename, defaults={"name": name, "content_type": ct} ) group, __ = Group.objects.get_or_create(name=name) if perm not in group.permissions.all(): group.permissions.add(perm) if administrator: if group not in administrator.groups.all(): administrator.groups.add(group) print(COLOR_WARNING + "** Verify import permissions in profiles **" + COLOR_ENDC) class Migration(migrations.Migration): dependencies = [ ('ishtar_common', '0232_auto_20231115_1616'), ] operations = [ migrations.RunPython(migrate), ]