from django.db import migrations


OLD_PERMISSION = "exam_requirement;update_preceding_examination_location"
NEW_PERMISSION = "exam_requirement;update_preceding_examination"


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

    for role_id in RolePermission.objects.filter(permission=OLD_PERMISSION).values_list("role_id", flat=True).distinct():
        RolePermission.objects.get_or_create(
            role_id=role_id,
            permission=NEW_PERMISSION,
        )
        RolePermission.objects.filter(
            role_id=role_id,
            permission=OLD_PERMISSION,
        ).delete()


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

    for role_id in RolePermission.objects.filter(permission=NEW_PERMISSION).values_list("role_id", flat=True).distinct():
        RolePermission.objects.get_or_create(
            role_id=role_id,
            permission=OLD_PERMISSION,
        )
        RolePermission.objects.filter(
            role_id=role_id,
            permission=NEW_PERMISSION,
        ).delete()


class Migration(migrations.Migration):

    dependencies = [
        ("api", "0045_update_exam_requirement_group_first_admin_role"),
    ]

    operations = [
        migrations.RunPython(forwards, reverse_code=backwards),
    ]