# Generated by Django 5.2.13 on 2026-04-26 21:54

import apps.core.storage.paths
import django.db.models.deletion
import django_fsm
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ("rims_grants", "0032_grantcall_applicant_budget_required"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.AddField(
            model_name="grantcall",
            name="withdrawal_reason",
            field=models.TextField(blank=True),
        ),
        migrations.AddField(
            model_name="grantcall",
            name="withdrawn_at",
            field=models.DateTimeField(blank=True, null=True),
        ),
        migrations.AddField(
            model_name="grantcall",
            name="withdrawn_by",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name="grant_calls_withdrawn",
                to=settings.AUTH_USER_MODEL,
            ),
        ),
        migrations.AlterField(
            model_name="grantcall",
            name="status",
            field=django_fsm.FSMField(
                choices=[
                    ("draft", "Draft"),
                    ("published", "Published"),
                    ("closed", "Closed"),
                    ("awarding", "Awarding"),
                    ("completed", "Completed"),
                    ("withdrawn", "Withdrawn"),
                ],
                db_index=True,
                default="draft",
                max_length=32,
                protected=True,
            ),
        ),
        migrations.CreateModel(
            name="MilestoneEvidence",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
                    ),
                ),
                ("file", models.FileField(upload_to=apps.core.storage.paths.upload_to_grants)),
                ("summary", models.TextField(blank=True)),
                ("submitted_at", models.DateTimeField(auto_now_add=True)),
                (
                    "review_status",
                    models.CharField(
                        choices=[
                            ("submitted", "Submitted"),
                            ("accepted", "Accepted"),
                            ("revision_required", "Revision required"),
                        ],
                        default="submitted",
                        max_length=24,
                    ),
                ),
                ("reviewed_at", models.DateTimeField(blank=True, null=True)),
                ("review_comment", models.TextField(blank=True)),
                (
                    "reviewed_by",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="milestone_evidence_reviewed",
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
                (
                    "submitted_by",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="milestone_evidence_submitted",
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
                (
                    "tranche",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="evidence",
                        to="rims_grants.awardtranche",
                    ),
                ),
            ],
            options={
                "ordering": ["-submitted_at", "-pk"],
            },
        ),
        migrations.CreateModel(
            name="FundingRecordVersion",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
                    ),
                ),
                ("version_number", models.PositiveIntegerField()),
                ("snapshot", models.JSONField(default=dict)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "created_by",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="funding_record_versions_created",
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
                (
                    "funding_record",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="versions",
                        to="rims_grants.fundingrecord",
                    ),
                ),
            ],
            options={
                "ordering": ["-version_number", "-pk"],
                "constraints": [
                    models.UniqueConstraint(
                        fields=("funding_record", "version_number"),
                        name="uniq_funding_record_version",
                    )
                ],
            },
        ),
        migrations.CreateModel(
            name="ReportingCalendarEntry",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
                    ),
                ),
                (
                    "kind",
                    models.CharField(
                        choices=[
                            ("financial", "Financial report"),
                            ("narrative", "Narrative report"),
                        ],
                        max_length=16,
                    ),
                ),
                ("due_on", models.DateField()),
                ("label", models.CharField(blank=True, max_length=128)),
                ("submitted_at", models.DateTimeField(blank=True, null=True)),
                (
                    "funding_record",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="reporting_calendar",
                        to="rims_grants.fundingrecord",
                    ),
                ),
            ],
            options={
                "ordering": ["due_on", "kind"],
                "constraints": [
                    models.UniqueConstraint(
                        fields=("funding_record", "kind", "due_on"),
                        name="uniq_reporting_calendar_entry",
                    )
                ],
            },
        ),
    ]
