# Generated by Django 6.0.4 on 2026-07-15 04:31

import apps.projects.models
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('projects', '0019_cashadvance_return_receipt'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.AddField(
            model_name='projectfundallocation',
            name='version',
            field=models.PositiveIntegerField(default=1, help_text='Bumped each time an approved revision is applied.'),
        ),
        migrations.CreateModel(
            name='ProjectFundAllocationRevision',
            fields=[
                ('id', models.UUIDField(default=apps.projects.models.uuid7, editable=False, primary_key=True, serialize=False)),
                ('action', models.CharField(choices=[('create', 'Create'), ('update', 'Update'), ('delete', 'Delete')], max_length=10)),
                ('status', models.CharField(choices=[('pending', 'Pending'), ('approved', 'Approved'), ('rejected', 'Rejected')], db_index=True, default='pending', max_length=10)),
                ('proposed_data', models.JSONField(blank=True, default=dict)),
                ('previous_data', models.JSONField(blank=True, default=dict)),
                ('reason', models.CharField(blank=True, help_text='Why this change is being proposed.', max_length=500)),
                ('proposed_at', models.DateTimeField(auto_now_add=True)),
                ('decided_at', models.DateTimeField(blank=True, null=True)),
                ('decision_note', models.CharField(blank=True, max_length=500)),
                ('allocation', models.ForeignKey(blank=True, help_text='Target allocation for update/delete. Null for create.', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='revisions', to='projects.projectfundallocation')),
                ('decided_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='decided_allocation_revisions', to=settings.AUTH_USER_MODEL)),
                ('fund', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='allocation_revisions', to='projects.projectfund')),
                ('proposed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='proposed_allocation_revisions', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'db_table': 'project_fund_allocation_revisions',
                'ordering': ['-proposed_at'],
                'indexes': [models.Index(fields=['fund', 'status'], name='project_fun_fund_id_c02f95_idx')],
            },
        ),
    ]
