from django.db import migrations


PERMISSIONS = [
    "exam_requirement;update_student_v2",
]


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:
        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:
        RolePermission.objects.filter(
            role_id=role.id,
            permission__in=PERMISSIONS,
        ).delete()


class Migration(migrations.Migration):

    dependencies = [
        ("api", "0054_update_suitability_first_admin_role"),
    ]

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