diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-04-18 16:35:46 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-04-18 17:44:55 +0200 |
commit | 7e631d9a322a8bb530652e7adac073d18baf326b (patch) | |
tree | 55d3e6f99fe6455c56f8455fe44f147edecbf10c /archaeological_finds/migrations | |
parent | 6332d4cf19d181cb12e61a857265596001fe4eb1 (diff) | |
download | Ishtar-7e631d9a322a8bb530652e7adac073d18baf326b.tar.bz2 Ishtar-7e631d9a322a8bb530652e7adac073d18baf326b.zip |
🗃️ conservation state becomes multi-valued (refs #5904)
Diffstat (limited to 'archaeological_finds/migrations')
-rw-r--r-- | archaeological_finds/migrations/0122_conservatory_states_m2m.py | 24 | ||||
-rw-r--r-- | archaeological_finds/migrations/0123_remove_old_conservatory_state.py | 56 |
2 files changed, 80 insertions, 0 deletions
diff --git a/archaeological_finds/migrations/0122_conservatory_states_m2m.py b/archaeological_finds/migrations/0122_conservatory_states_m2m.py new file mode 100644 index 000000000..85fd4163c --- /dev/null +++ b/archaeological_finds/migrations/0122_conservatory_states_m2m.py @@ -0,0 +1,24 @@ +# Generated by Django 2.2.24 on 2024-04-18 14:07 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0121_fix_bad_treatment_types_states'), + ] + + operations = [ + migrations.AddField( + model_name='find', + name='conservatory_states', + field=models.ManyToManyField(blank=True, to='archaeological_finds.ConservatoryState', verbose_name='Conservatory states'), + ), + migrations.AlterField( + model_name='find', + name='conservatory_state', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='finds_previous', to='archaeological_finds.ConservatoryState', verbose_name='Conservatory state'), + ), + ] diff --git a/archaeological_finds/migrations/0123_remove_old_conservatory_state.py b/archaeological_finds/migrations/0123_remove_old_conservatory_state.py new file mode 100644 index 000000000..91a6fd4e6 --- /dev/null +++ b/archaeological_finds/migrations/0123_remove_old_conservatory_state.py @@ -0,0 +1,56 @@ +# Generated by Django 2.2.24 on 2024-04-18 14:24 + +import sys +from django.db import migrations, models +from ishtar_common.utils import BColors + + +def migrate_conservatory_state(apps, __): + Find = apps.get_model("archaeological_finds", "Find") + q = Find.objects.filter(conservatory_state__isnull=False) + sys.stdout.write("\n") + total = q.count() + for idx, find in enumerate(q.all()): + sys.stdout.write(f"\r{BColors.OKBLUE}→ Migration {idx}/{total}{BColors.ENDC}") + find.conservatory_states.add(find.conservatory_state) + print(BColors.format("OKGREEN", f"\r* Conservatory state changed for {q.count()} find(s).")) + + # migrate importers + ImporterDefault = apps.get_model("ishtar_common", "ImporterDefault") + for default in ImporterDefault.objects.filter(target__contains='conservatory_state').all(): + default.target = default.target.replace("conservatory_state", "conservatory_states") + default.save() + + ImporterDuplicateField = apps.get_model("ishtar_common", "ImporterDuplicateField") + for dup in ImporterDuplicateField.objects.filter(field_name__contains='conservatory_state').all(): + dup.field_name = dup.field_name.replace("conservatory_state", "conservatory_states") + dup.save() + + ImportTarget = apps.get_model("ishtar_common", "ImportTarget") + for targ in ImportTarget.objects.filter(target__contains='conservatory_state').all(): + targ.target = targ.target.replace("conservatory_state", "conservatory_states") + targ.save() + + FormaterType = apps.get_model("ishtar_common", "FormaterType") + for f in FormaterType.objects.filter(options__contains='ConservatoryState').all(): + f.many_split = '&' + f.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0122_conservatory_states_m2m'), + ] + + operations = [ + migrations.RunPython(migrate_conservatory_state), + migrations.RemoveField( + model_name='find', + name='conservatory_state', + ), + migrations.RemoveField( + model_name='historicalfind', + name='conservatory_state', + ), + ] |