from django.db import migrations


def update_first_admin_role(apps, schema_editor):
    Role = apps.get_model("api", "Role")
    RolePermission = apps.get_model("api", "RolePermission")

    role = Role.objects.filter(type="admin").first()
    if role:
        permissions = [
            "exam_requirement;delivery_info",
        ]
        for permission in permissions:
            RolePermission.objects.get_or_create(
                role_id=role.id,
                permission=permission,
            )


def reverse_update_first_admin_role(apps, schema_editor):
    Role = apps.get_model("api", "Role")
    RolePermission = apps.get_model("api", "RolePermission")

    role = Role.objects.filter(type="admin").first()
    if role:
        permissions = [
            "exam_requirement;delivery_info",
        ]
        RolePermission.objects.filter(
            role_id=role.id,
            permission__in=permissions,
        ).delete()


class Migration(migrations.Migration):

    dependencies = [
        ("api", "0046_rename_preceding_examination_permission_code"),
    ]

    operations = [
        migrations.RunPython(
            update_first_admin_role,
            reverse_code=reverse_update_first_admin_role,
        ),
    ]