50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
|
# Generated by Django 5.0.7 on 2024-08-06 13:40
|
||
|
|
||
|
from django.db import migrations
|
||
|
from django.db.models import Q
|
||
|
|
||
|
from codelist.settings import CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID, CODELIST_BIOTOPES_EXTRA_CODES_ID
|
||
|
|
||
|
|
||
|
def migrate_975_to_288(apps, schema_editor):
|
||
|
KonovaCodeList = apps.get_model('codelist', 'KonovaCodeList')
|
||
|
CompensationState = apps.get_model('compensation', 'CompensationState')
|
||
|
|
||
|
list_288 = KonovaCodeList.objects.get(
|
||
|
id=CODELIST_BIOTOPES_EXTRA_CODES_FULL_ID
|
||
|
).codes.all()
|
||
|
|
||
|
states_with_extra_code = CompensationState.objects.filter(
|
||
|
~Q(biotope_type_details=None)
|
||
|
)
|
||
|
|
||
|
print(f"... Found {states_with_extra_code.count()} biotope state entries")
|
||
|
for state in states_with_extra_code:
|
||
|
extra_codes_975 = state.biotope_type_details.filter(
|
||
|
code_lists__in=[CODELIST_BIOTOPES_EXTRA_CODES_ID]
|
||
|
)
|
||
|
count_extra_codes_975 = extra_codes_975.count()
|
||
|
if count_extra_codes_975 > 0:
|
||
|
print(f" --> Found {count_extra_codes_975} codes from list 975 in biotope entry {state.id}")
|
||
|
extra_codes_288 = []
|
||
|
for extra_code_975 in extra_codes_975:
|
||
|
atom_id = extra_code_975.atom_id
|
||
|
codes_from_288 = list_288.filter(
|
||
|
atom_id=atom_id,
|
||
|
)
|
||
|
extra_codes_288 += codes_from_288
|
||
|
|
||
|
state.biotope_type_details.set(extra_codes_288)
|
||
|
print(" --> Migrated to list 288 for all biotope entries")
|
||
|
|
||
|
|
||
|
class Migration(migrations.Migration):
|
||
|
|
||
|
dependencies = [
|
||
|
('codelist', '0001_initial'),
|
||
|
]
|
||
|
|
||
|
operations = [
|
||
|
migrations.RunPython(migrate_975_to_288)
|
||
|
]
|