# Generated by Django 5.2.1 on 2025-08-30 21:51 import logging from django.db import migrations def map_status(adoption_notice_status): minor = adoption_notice_status.minor_status if minor == "searching": return "active_searching" if minor == "interested": return "active_interested" if minor == "waiting_for_review": return "awaiting_action_waiting_for_review" if minor == "needs_additional_info": return "awaiting_action_needs_additional_info" if minor == "successful_with_notfellchen": return "closed_successful_with_notfellchen" if minor == "successful_without_notfellchen": return "closed_successful_without_notfellchen" if minor == "animal_died": return "closed_animal_died" if minor == "closed_for_other_adoption_notice": return "closed_for_other_adoption_notice" if minor == "not_open_for_adoption_anymore": return "closed_not_open_for_adoption_anymore" if minor == "other": return "closed_other" if minor == "against_the_rules": return "disabled_against_the_rules" if minor == "unchecked": return "disabled_unchecked" if minor in ["missing_information", "technical_error"]: return "disabled_other" return None def migrate_status(apps, schema_editor): # We can't import the model directly as it may be a newer # version than this migration expects. We use the historical version. AdoptionNoticeStatus = apps.get_model("fellchensammlung", "AdoptionNoticeStatus") AdoptionNotice = apps.get_model("fellchensammlung", "AdoptionNotice") for ans in AdoptionNoticeStatus.objects.all(): adoption_notice = AdoptionNotice.objects.get(id=ans.adoption_notice.id) new_status = map_status(ans) logging.debug(f"{ans.minor_status} -> {new_status}") adoption_notice.adoption_notice_status = map_status(ans) adoption_notice.save() class Migration(migrations.Migration): dependencies = [ ('fellchensammlung', '0060_alter_adoptionnotice_options_and_more'), ] operations = [ migrations.RunPython(migrate_status), ]