from django.conf import settings
from django.db import migrations, models


def backfill_project_lead(apps, schema_editor):
    Project = apps.get_model("rims_projects", "Project")
    for project in Project.objects.filter(lead__isnull=True).select_related("award__application__applicant"):
        award = getattr(project, "award", None)
        application = getattr(award, "application", None)
        applicant = getattr(application, "applicant", None)
        if applicant is not None:
            project.lead_id = applicant.pk
            project.save(update_fields=["lead"])


class Migration(migrations.Migration):
    dependencies = [
        ("rims_projects", "0003_milestone_workflow_and_audit"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.AddField(
            model_name="project",
            name="lead",
            field=models.ForeignKey(
                blank=True,
                help_text="Principal Investigator / project lead responsible for delivery.",
                null=True,
                on_delete=models.SET_NULL,
                related_name="led_projects",
                to=settings.AUTH_USER_MODEL,
            ),
        ),
        migrations.RunPython(backfill_project_lead, migrations.RunPython.noop),
    ]
