# -*- coding: utf-8 -*- # Generated by Django 1.11.27 on 2020-12-22 13:39 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): dependencies = [ ('archaeological_warehouse', '0106_auto_20201203_1453'), ] operations = [ migrations.AlterField( model_name='containertype', name='stationary', field=models.BooleanField(default=False, help_text='Container that will not usually be moved. Ex: building, room, span, shelf.', verbose_name='Stationary'), ), migrations.AlterField( model_name='historicalwarehouse', name='max_division_number', field=models.IntegerField(default=0, help_text='Automatically generated', verbose_name='Maximum number of divisions'), ), migrations.AlterField( model_name='warehouse', 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')]), ), ]