forked from enviPath/enviPy
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
# 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),
|
|
]
|