from django.db import migrations


def seed_finance_roles(apps, schema_editor):
    Role = apps.get_model("core", "Role")
    Permission = apps.get_model("core", "Permission")
    definitions = {
        "finance-staff": ("Finance Staff", [("finance", "view"), ("finance", "create"), ("finance", "update"), ("procurements", "view"), ("procurements", "create")]),
        "fat-manager": ("F.A.T Manager", [("finance", "view"), ("finance", "create"), ("finance", "update"), ("finance", "approve"), ("procurements", "view"), ("procurements", "approve")]),
    }
    for slug, (name, codenames) in definitions.items():
        role, _ = Role.objects.get_or_create(slug=slug, defaults={"name": name, "description": "System Finance workflow role.", "is_system": True})
        for domain, action in codenames:
            permission, _ = Permission.objects.get_or_create(domain=domain, action=action, defaults={"label": f"{domain.title()} {action.title()}"})
            role.permissions.add(permission)


class Migration(migrations.Migration):
    dependencies = [("core", "0008_procurement_finance_authorities")]
    operations = [migrations.RunPython(seed_finance_roles, migrations.RunPython.noop)]
