from django.db import migrations, models
import django.db.models.deletion


def backfill_boleta_variedad(apps, schema_editor):
    Boleta = apps.get_model("boletas", "Boleta")
    qs = Boleta.objects.filter(variedad__isnull=True).only("id", "contrato_id")
    for boleta in qs.iterator():
        if boleta.contrato_id is None:
            continue
        boleta.variedad_id = boleta.contrato.variedad_id
        boleta.save(update_fields=["variedad"])


class Migration(migrations.Migration):

    dependencies = [
        ("catalogos", "0008_alter_bodega_options"),
        ("boletas", "0007_boleta_estado_asignada"),
    ]

    operations = [
        migrations.AddField(
            model_name="boleta",
            name="variedad",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.PROTECT,
                related_name="boletas",
                to="catalogos.variedad",
            ),
        ),
        migrations.RunPython(backfill_boleta_variedad, migrations.RunPython.noop),
        migrations.AlterField(
            model_name="boleta",
            name="variedad",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.PROTECT,
                related_name="boletas",
                to="catalogos.variedad",
            ),
        ),
    ]
