summaryrefslogtreecommitdiff
path: root/archaeological_finds/migrations
diff options
context:
space:
mode:
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
commit7e631d9a322a8bb530652e7adac073d18baf326b (patch)
tree55d3e6f99fe6455c56f8455fe44f147edecbf10c /archaeological_finds/migrations
parent6332d4cf19d181cb12e61a857265596001fe4eb1 (diff)
downloadIshtar-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.py24
-rw-r--r--archaeological_finds/migrations/0123_remove_old_conservatory_state.py56
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',
+ ),
+ ]