# -*- coding: utf-8 -*- # Generated by Django 1.11.27 on 2020-01-23 18:21 from __future__ import unicode_literals import datetime from django.conf import settings import django.contrib.gis.db.models.fields import django.contrib.postgres.fields.jsonb import django.contrib.postgres.indexes import django.contrib.postgres.search import django.core.validators from django.db import migrations, models import django.db.models.deletion import ishtar_common.models import ishtar_common.models_common import re import uuid class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('ishtar_common', '0201_squashed'), ] operations = [ migrations.CreateModel( name='Collection', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default={})), ('search_vector', django.contrib.postgres.search.SearchVectorField(blank=True, help_text='Auto filled at save', null=True, verbose_name='Search vector')), ('last_modified', models.DateTimeField(auto_now=True)), ('history_m2m', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default={})), ('need_update', models.BooleanField(default=False, verbose_name='Need update')), ('locked', models.BooleanField(default=False, verbose_name='Item locked for edition')), ('history_date', models.DateTimeField(default=datetime.datetime.now)), ('name', models.CharField(blank=True, max_length=200, null=True, verbose_name='Name')), ('description', models.TextField(blank=True, null=True, verbose_name='Description')), ('history_creator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Creator')), ('history_modifier', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Last editor')), ('imports', models.ManyToManyField(blank=True, related_name='imported_archaeological_warehouse_collection', to='ishtar_common.Import')), ('lock_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Locked by')), ], options={ 'verbose_name': 'Collection', 'verbose_name_plural': 'Collection', 'ordering': ('name',), }, bases=(ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models_common.FixAssociated, ishtar_common.models.CascasdeUpdate), ), migrations.CreateModel( name='Container', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default={})), ('search_vector', django.contrib.postgres.search.SearchVectorField(blank=True, help_text='Auto filled at save', null=True, verbose_name='Search vector')), ('qrcode', models.ImageField(blank=True, max_length=255, null=True, upload_to=ishtar_common.models.get_image_path)), ('x', models.FloatField(blank=True, null=True, verbose_name='X')), ('y', models.FloatField(blank=True, null=True, verbose_name='Y')), ('z', models.FloatField(blank=True, null=True, verbose_name='Z')), ('estimated_error_x', models.FloatField(blank=True, null=True, verbose_name='Estimated error for X')), ('estimated_error_y', models.FloatField(blank=True, null=True, verbose_name='Estimated error for Y')), ('estimated_error_z', models.FloatField(blank=True, null=True, verbose_name='Estimated error for Z')), ('point', django.contrib.gis.db.models.fields.PointField(blank=True, dim=3, null=True, srid=4326, verbose_name='Point')), ('point_2d', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326, verbose_name='Point (2D)')), ('point_source', models.CharField(blank=True, choices=[('T', 'Town'), ('P', 'Precise'), ('M', 'Polygon')], max_length=1, null=True, verbose_name='Point source')), ('point_source_item', models.CharField(blank=True, max_length=100, null=True, verbose_name='Point source item')), ('multi_polygon', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326, verbose_name='Multi polygon')), ('multi_polygon_source', models.CharField(blank=True, choices=[('T', 'Town'), ('P', 'Precise'), ('M', 'Polygon')], max_length=1, null=True, verbose_name='Multi-polygon source')), ('multi_polygon_source_item', models.CharField(blank=True, max_length=100, null=True, verbose_name='Multi polygon source item')), ('last_modified', models.DateTimeField(auto_now=True)), ('history_m2m', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default={})), ('need_update', models.BooleanField(default=False, verbose_name='Need update')), ('locked', models.BooleanField(default=False, verbose_name='Item locked for edition')), ('history_date', models.DateTimeField(default=datetime.datetime.now)), ('uuid', models.UUIDField(default=uuid.uuid4)), ('reference', models.TextField(verbose_name='Container ref.')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Localisation')), ('cached_location', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached location')), ('cached_division', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached division')), ('index', models.IntegerField(default=0, verbose_name='Container ID')), ('old_reference', models.TextField(blank=True, null=True, verbose_name='Old reference')), ('external_id', models.TextField(blank=True, null=True, verbose_name='External ID')), ('auto_external_id', models.BooleanField(default=False, verbose_name='External ID is set automatically')), ], options={ 'verbose_name': 'Container', 'verbose_name_plural': 'Containers', 'ordering': ('cached_label',), 'permissions': (('view_container', 'Can view all Containers'), ('view_own_container', 'Can view own Container'), ('add_own_container', 'Can add own Container'), ('change_own_container', 'Can change own Container'), ('delete_own_container', 'Can delete own Container')), }, bases=(ishtar_common.models.DocumentItem, ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models_common.FixAssociated, ishtar_common.models.CascasdeUpdate, ishtar_common.models.ImageContainerModel, ishtar_common.models.OwnPerms, ishtar_common.models.MainItem), ), migrations.CreateModel( name='ContainerLocalisation', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('reference', models.CharField(default='', max_length=200, verbose_name='Reference')), ('container', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='division', to='archaeological_warehouse.Container', verbose_name='Container')), ], options={ 'verbose_name': 'Container localisation', 'verbose_name_plural': 'Container localisations', 'ordering': ('container', 'division__order'), }, ), migrations.CreateModel( name='ContainerType', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('label', models.TextField(verbose_name='Label')), ('txt_idx', models.TextField(help_text='The slug is the standardized version of the name. It contains only lowercase letters, numbers and hyphens. Each slug must be unique.', unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[-a-zA-Z0-9_]+\\Z', 32), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('available', models.BooleanField(default=True, verbose_name='Available')), ('length', models.IntegerField(blank=True, null=True, verbose_name='Length (mm)')), ('width', models.IntegerField(blank=True, null=True, verbose_name='Width (mm)')), ('height', models.IntegerField(blank=True, null=True, verbose_name='Height (mm)')), ('volume', models.FloatField(blank=True, null=True, verbose_name='Volume (l)')), ('reference', models.CharField(blank=True, max_length=300, null=True, verbose_name='Ref.')), ], options={ 'verbose_name': 'Container type', 'verbose_name_plural': 'Container types', 'ordering': ('label',), }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.CreateModel( name='Warehouse', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default={})), ('search_vector', django.contrib.postgres.search.SearchVectorField(blank=True, help_text='Auto filled at save', null=True, verbose_name='Search vector')), ('qrcode', models.ImageField(blank=True, max_length=255, null=True, upload_to=ishtar_common.models.get_image_path)), ('x', models.FloatField(blank=True, null=True, verbose_name='X')), ('y', models.FloatField(blank=True, null=True, verbose_name='Y')), ('z', models.FloatField(blank=True, null=True, verbose_name='Z')), ('estimated_error_x', models.FloatField(blank=True, null=True, verbose_name='Estimated error for X')), ('estimated_error_y', models.FloatField(blank=True, null=True, verbose_name='Estimated error for Y')), ('estimated_error_z', models.FloatField(blank=True, null=True, verbose_name='Estimated error for Z')), ('point', django.contrib.gis.db.models.fields.PointField(blank=True, dim=3, null=True, srid=4326, verbose_name='Point')), ('point_2d', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326, verbose_name='Point (2D)')), ('point_source', models.CharField(blank=True, choices=[('T', 'Town'), ('P', 'Precise'), ('M', 'Polygon')], max_length=1, null=True, verbose_name='Point source')), ('point_source_item', models.CharField(blank=True, max_length=100, null=True, verbose_name='Point source item')), ('multi_polygon', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326, verbose_name='Multi polygon')), ('multi_polygon_source', models.CharField(blank=True, choices=[('T', 'Town'), ('P', 'Precise'), ('M', 'Polygon')], max_length=1, null=True, verbose_name='Multi-polygon source')), ('multi_polygon_source_item', models.CharField(blank=True, max_length=100, null=True, verbose_name='Multi polygon source item')), ('last_modified', models.DateTimeField(auto_now=True)), ('history_m2m', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default={})), ('need_update', models.BooleanField(default=False, verbose_name='Need update')), ('locked', models.BooleanField(default=False, verbose_name='Item locked for edition')), ('address', models.TextField(blank=True, null=True, verbose_name='Address')), ('address_complement', models.TextField(blank=True, null=True, verbose_name='Address complement')), ('postal_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Postal code')), ('town', models.CharField(blank=True, max_length=150, null=True, verbose_name='Town (freeform)')), ('country', models.CharField(blank=True, max_length=30, null=True, verbose_name='Country')), ('alt_address', models.TextField(blank=True, null=True, verbose_name='Other address: address')), ('alt_address_complement', models.TextField(blank=True, null=True, verbose_name='Other address: address complement')), ('alt_postal_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Other address: postal code')), ('alt_town', models.CharField(blank=True, max_length=70, null=True, verbose_name='Other address: town')), ('alt_country', models.CharField(blank=True, max_length=30, null=True, verbose_name='Other address: country')), ('phone', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone')), ('phone_desc', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description')), ('phone2', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone description 2')), ('phone_desc2', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description 2')), ('phone3', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone 3')), ('phone_desc3', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description 3')), ('raw_phone', models.TextField(blank=True, null=True, verbose_name='Raw phone')), ('mobile_phone', models.CharField(blank=True, max_length=18, null=True, verbose_name='Mobile phone')), ('email', models.EmailField(blank=True, max_length=300, null=True, verbose_name='Email')), ('alt_address_is_prefered', models.BooleanField(default=False, verbose_name='Alternative address is prefered')), ('uuid', models.UUIDField(default=uuid.uuid4)), ('name', models.CharField(max_length=200, verbose_name='Name')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('external_id', models.TextField(blank=True, null=True, verbose_name='External ID')), ('auto_external_id', models.BooleanField(default=False, verbose_name='External ID is set automatically')), ], options={ 'verbose_name': 'Warehouse', 'verbose_name_plural': 'Warehouses', 'permissions': (('view_warehouse', 'Can view all Warehouses'), ('view_own_warehouse', 'Can view own Warehouse'), ('add_own_warehouse', 'Can add own Warehouse'), ('change_own_warehouse', 'Can change own Warehouse'), ('delete_own_warehouse', 'Can delete own Warehouse')), }, bases=(ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, ishtar_common.models.DocumentItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models_common.FixAssociated, ishtar_common.models.CascasdeUpdate, ishtar_common.models.ImageContainerModel, ishtar_common.models.DashboardFormItem, ishtar_common.models.OwnPerms, ishtar_common.models.MainItem), ), migrations.CreateModel( name='WarehouseDivision', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('label', models.TextField(verbose_name='Label')), ('txt_idx', models.TextField(help_text='The slug is the standardized version of the name. It contains only lowercase letters, numbers and hyphens. Each slug must be unique.', unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[-a-zA-Z0-9_]+\\Z', 32), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('available', models.BooleanField(default=True, verbose_name='Available')), ], options={ 'verbose_name': 'Warehouse division type', 'verbose_name_plural': 'Warehouse division types', }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.CreateModel( name='WarehouseDivisionLink', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('order', models.IntegerField(default=10, verbose_name='Order')), ('division', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='archaeological_warehouse.WarehouseDivision')), ('warehouse', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='divisions', to='archaeological_warehouse.Warehouse')), ], options={ 'ordering': ('warehouse', 'order'), }, ), migrations.CreateModel( name='WarehouseType', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('label', models.TextField(verbose_name='Label')), ('txt_idx', models.TextField(help_text='The slug is the standardized version of the name. It contains only lowercase letters, numbers and hyphens. Each slug must be unique.', unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[-a-zA-Z0-9_]+\\Z', 32), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('available', models.BooleanField(default=True, verbose_name='Available')), ], options={ 'verbose_name': 'Warehouse type', 'verbose_name_plural': 'Warehouse types', 'ordering': ('label',), }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.AddField( model_name='warehouse', name='associated_divisions', field=models.ManyToManyField(blank=True, through='archaeological_warehouse.WarehouseDivisionLink', to='archaeological_warehouse.WarehouseDivision', verbose_name='Divisions'), ), migrations.AddField( model_name='warehouse', name='documents', field=models.ManyToManyField(blank=True, related_name='warehouses', to='ishtar_common.Document', verbose_name='Documents'), ), migrations.AddField( model_name='warehouse', name='history_creator', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Creator'), ), migrations.AddField( model_name='warehouse', name='history_modifier', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Last editor'), ), migrations.AddField( model_name='warehouse', name='imports', field=models.ManyToManyField(blank=True, related_name='imported_archaeological_warehouse_warehouse', to='ishtar_common.Import'), ), migrations.AddField( model_name='warehouse', name='lock_user', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Locked by'), ), migrations.AddField( model_name='warehouse', name='main_image', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_image_warehouses', to='ishtar_common.Document', verbose_name='Main image'), ), migrations.AddField( model_name='warehouse', name='organization', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='warehouses', to='ishtar_common.Organization', verbose_name='Organization'), ), migrations.AddField( model_name='warehouse', name='person_in_charge', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='warehouse_in_charge', to='ishtar_common.Person', verbose_name='Person in charge'), ), migrations.AddField( model_name='warehouse', name='precise_town', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Town', verbose_name='Town (precise)'), ), migrations.AddField( model_name='warehouse', name='spatial_reference_system', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.SpatialReferenceSystem', verbose_name='Spatial Reference System'), ), migrations.AddField( model_name='warehouse', name='warehouse_type', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='archaeological_warehouse.WarehouseType', verbose_name='Warehouse type'), ), migrations.AddField( model_name='containerlocalisation', name='division', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='archaeological_warehouse.WarehouseDivisionLink', verbose_name='Division'), ), migrations.AddField( model_name='container', name='container_type', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='archaeological_warehouse.ContainerType', verbose_name='Container type'), ), migrations.AddField( model_name='container', name='documents', field=models.ManyToManyField(blank=True, related_name='containers', to='ishtar_common.Document', verbose_name='Documents'), ), migrations.AddField( model_name='container', name='history_creator', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Creator'), ), migrations.AddField( model_name='container', name='history_modifier', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Last editor'), ), migrations.AddField( model_name='container', name='imports', field=models.ManyToManyField(blank=True, related_name='imported_archaeological_warehouse_container', to='ishtar_common.Import'), ), migrations.AddField( model_name='container', name='location', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='containers', to='archaeological_warehouse.Warehouse', verbose_name='Location (warehouse)'), ), migrations.AddField( model_name='container', name='lock_user', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Locked by'), ), migrations.AddField( model_name='container', name='main_image', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_image_containers', to='ishtar_common.Document', verbose_name='Main image'), ), migrations.AddField( model_name='container', name='responsible', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owned_containers', to='archaeological_warehouse.Warehouse', verbose_name='Responsible warehouse'), ), migrations.AddField( model_name='container', name='spatial_reference_system', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.SpatialReferenceSystem', verbose_name='Spatial Reference System'), ), migrations.AddField( model_name='collection', name='warehouse', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='collections', to='archaeological_warehouse.Warehouse', verbose_name='Warehouse'), ), migrations.AlterUniqueTogether( name='warehousedivisionlink', unique_together=set([('warehouse', 'division')]), ), migrations.AddIndex( model_name='warehouse', index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='archaeologi_data_49b6ad_gin'), ), migrations.AlterUniqueTogether( name='containerlocalisation', unique_together=set([('container', 'division')]), ), migrations.AddIndex( model_name='container', index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='archaeologi_data_edae47_gin'), ), migrations.AlterUniqueTogether( name='container', unique_together=set([('index', 'responsible')]), ), migrations.AddIndex( model_name='collection', index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='archaeologi_data_4a4a83_gin'), ), ]