# 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) ]