from django.db import migrations, models


def normalize_owners(apps, schema_editor):
    Member = apps.get_model("projects", "ProjectTeamMember")
    project_ids = Member.objects.filter(role="owner").values_list("project_id", flat=True).distinct()
    for project_id in project_ids:
        owners = Member.objects.filter(project_id=project_id, role="owner").order_by("joined_at", "id")
        keep = owners.first()
        owners.exclude(id=keep.id).update(role="manager")


class Migration(migrations.Migration):
    dependencies = [("projects", "0022_remove_paymentrequestform_attachment_checklist_and_more")]
    operations = [
        migrations.RunPython(normalize_owners, migrations.RunPython.noop),
        migrations.AddConstraint(
            model_name="projectteammember",
            constraint=models.UniqueConstraint(fields=("project",), condition=models.Q(role="owner"), name="unique_project_owner"),
        ),
    ]
