diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-12-23 08:48:56 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:23 +0100 |
commit | a253e527bda6b174d857999ad4ffc7bf7d2008e8 (patch) | |
tree | c87061a9c41e9ff76fb25526a34c764e59985b38 /archaeological_warehouse/migrations | |
parent | abfa9a338392da4c53a66b9e5aa1a4496488021b (diff) | |
download | Ishtar-a253e527bda6b174d857999ad4ffc7bf7d2008e8.tar.bz2 Ishtar-a253e527bda6b174d857999ad4ffc7bf7d2008e8.zip |
Container: fix index generation
Diffstat (limited to 'archaeological_warehouse/migrations')
-rw-r--r-- | archaeological_warehouse/migrations/0107_auto_20201222_1339.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/archaeological_warehouse/migrations/0107_auto_20201222_1339.py b/archaeological_warehouse/migrations/0107_auto_20201222_1339.py index f51036b59..6bd418541 100644 --- a/archaeological_warehouse/migrations/0107_auto_20201222_1339.py +++ b/archaeological_warehouse/migrations/0107_auto_20201222_1339.py @@ -3,6 +3,26 @@ from __future__ import unicode_literals from django.db import migrations, models +from django.db.models import Max, Q + + +def fix_index(apps, schema_editor): + Container = apps.get_model('archaeological_warehouse', 'Container') + for c in Container.objects.all(): + q = Container.objects.filter( + Q(responsible_id=c.responsible_id, index=c.index) | + Q(location_id=c.location_id, index=c.index) + ).exclude(id=c.id) + if q.count(): + max_index = Container.objects.filter( + responsible_id=c.responsible_id).exclude( + id=c.id).all().aggregate(Max("index"))["index__max"] + 1 + while Container.objects.filter( + location_id=c.location_id, + index=max_index).exclude(id=c.id).count(): + max_index += 1 + c.index = max_index + c.save() class Migration(migrations.Migration): @@ -27,6 +47,7 @@ class Migration(migrations.Migration): name='max_division_number', field=models.IntegerField(default=0, help_text='Automatically generated', verbose_name='Maximum number of divisions'), ), + migrations.RunPython(fix_index), migrations.AlterUniqueTogether( name='container', unique_together=set([('index', 'location'), ('location', 'container_type', 'parent', 'reference')]), |