# Generated by Django 6.0.3 on 2026-06-02 17:18

from django.db import migrations
from envipy_additional_information import DOI


def forward_func(apps, schema_editor):
    AdditionalInformation = apps.get_model("epdb", "AdditionalInformation")

    refs = AdditionalInformation.objects.filter(type="Reference")

    remaining = []

    for ref in refs:
        r = ref.data["reference"]
        try:
            # PubMed IDs are plain ints, try parsing
            _ = int(r)
            # Nothing to do
        except ValueError:
            DOMAINS = [
                "http://dx.doi.org/",
                "https://dx.doi.org/",
                "http://doi.org/",
                "https://doi.org/",
            ]
            for d in DOMAINS:
                r = r.replace(d, "")

            if r.startswith("10."):
                ref.type = DOI.__name__
                ref.data = {"doi": r}
                ref.save()
            else:
                remaining.append(ref)

    if len(remaining) > 0:
        raise ValueError(f"Could not parse {len(remaining)} references")


class Migration(migrations.Migration):
    dependencies = [
        ("epdb", "0025_auto_20260511_2025"),
    ]

    operations = [
        migrations.RunPython(forward_func, reverse_code=migrations.RunPython.noop),
    ]
