# -*- coding: utf-8 -*- # Generated by Django 1.11.27 on 2020-01-23 18:21 import archaeological_operations.models 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 = [ ('archaeological_files', '0101_squashed'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('ishtar_common', '0201_squashed'), ('archaeological_finds', '0101_squashed'), ] operations = [ migrations.CreateModel( name='OperationByDepartment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ], options={ 'db_table': 'operation_department', 'managed': False, }, ), migrations.CreateModel( name='ActType', 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')), ('intented_to', models.CharField(choices=[('F', 'Archaeological file'), ('O', 'Operation'), ('TF', 'Treatment request'), ('T', 'Treatment')], max_length=2, verbose_name='Intended to')), ('code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Code')), ('indexed', models.BooleanField(default=False, verbose_name='Indexed')), ('associated_template', models.ManyToManyField(blank=True, related_name='acttypes', to='ishtar_common.DocumentTemplate', verbose_name='Associated template')), ], options={ 'verbose_name': 'Act type', 'verbose_name_plural': 'Act types', 'ordering': ('label',), }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.CreateModel( name='AdministrativeAct', 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')), ('index', models.IntegerField(blank=True, null=True, verbose_name='Index')), ('signature_date', models.DateField(blank=True, null=True, verbose_name='Signature date')), ('year', models.IntegerField(blank=True, null=True, verbose_name='Year')), ('act_object', models.TextField(blank=True, max_length=300, null=True, verbose_name='Object')), ('ref_sra', models.CharField(blank=True, max_length=15, null=True, verbose_name='Référence SRA')), ('departments_label', models.TextField(blank=True, help_text='Cached values get from associated departments', null=True, verbose_name='Departments')), ('towns_label', models.TextField(blank=True, help_text='Cached values get from associated towns', null=True, verbose_name='Towns')), ('act_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='archaeological_operations.ActType', verbose_name='Act type')), ('associated_file', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='administrative_act', to='archaeological_files.File', verbose_name='Archaeological file')), ('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_operations_administrativeact', to='ishtar_common.Import')), ('in_charge', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='adminact_operation_in_charge', to='ishtar_common.Person', verbose_name='Person in charge of the operation')), ('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': 'Administrative act', 'verbose_name_plural': 'Administrative acts', 'ordering': ('year', 'signature_date', 'index', 'act_type'), 'permissions': (('view_own_administrativeact', 'Can view own Administrative act'), ('add_own_administrativeact', 'Can add own Administrative act'), ('change_own_administrativeact', 'Can change own Administrative act'), ('delete_own_administrativeact', 'Can delete own Administrative act')), }, bases=(ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models_common.FixAssociated, ishtar_common.models.OwnPerms, ishtar_common.models.ValueGetter), ), migrations.CreateModel( name='ArchaeologicalSite', 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')), ('reference', models.CharField(max_length=200, unique=True, verbose_name='Reference')), ('other_reference', models.TextField(blank=True, null=True, verbose_name='Other reference')), ('name', models.CharField(blank=True, max_length=200, null=True, verbose_name='Name')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('locality_ngi', models.TextField(blank=True, null=True, verbose_name='National Geographic Institute locality')), ('locality_cadastral', models.TextField(blank=True, null=True, verbose_name='Cadastral locality')), ('shipwreck_name', models.TextField(blank=True, null=True, verbose_name='Shipwreck name')), ('oceanographic_service_localisation', models.TextField(blank=True, null=True, verbose_name='Oceanographic service localisation')), ('shipwreck_code', models.TextField(blank=True, null=True, verbose_name='Shipwreck code')), ('sinking_date', models.DateField(blank=True, null=True, verbose_name='Sinking date')), ('discovery_area', models.TextField(blank=True, null=True, verbose_name='Discovery area')), ('affmar_number', models.CharField(blank=True, max_length=100, null=True, verbose_name='AffMar number')), ('drassm_number', models.CharField(blank=True, max_length=100, null=True, verbose_name='DRASSM number')), ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')), ('cached_towns_label', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached town label')), ('cached_periods', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached periods label')), ('cached_remains', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached remains label')), ('collaborators', models.ManyToManyField(blank=True, related_name='site_collaborator', to='ishtar_common.Person', verbose_name='Collaborators')), ], options={ 'verbose_name': 'Archaeological site', 'verbose_name_plural': 'Archaeological sites', 'permissions': (('view_own_archaeologicalsite', 'Can view own Archaeological site'), ('add_own_archaeologicalsite', 'Can add own Archaeological site'), ('change_own_archaeologicalsite', 'Can change own Archaeological site'), ('delete_own_archaeologicalsite', 'Can delete own Archaeological site')), }, 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.ImageContainerModel, ishtar_common.models.OwnPerms, ishtar_common.models.ValueGetter, ishtar_common.models.MainItem), ), migrations.CreateModel( name='CulturalAttributionType', 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')), ('order', models.IntegerField(default=10, verbose_name='Order')), ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_operations.CulturalAttributionType', verbose_name='Parent')), ], options={ 'verbose_name': 'Cultural attribution type', 'verbose_name_plural': 'Cultural attribution types', 'ordering': ('order',), }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.CreateModel( name='HistoricalAdministrativeAct', fields=[ ('id', models.IntegerField(auto_created=True, blank=True, db_index=True, 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(blank=True, editable=False)), ('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')), ('index', models.IntegerField(blank=True, null=True, verbose_name='Index')), ('signature_date', models.DateField(blank=True, null=True, verbose_name='Signature date')), ('year', models.IntegerField(blank=True, null=True, verbose_name='Year')), ('act_object', models.TextField(blank=True, max_length=300, null=True, verbose_name='Object')), ('ref_sra', models.CharField(blank=True, max_length=15, null=True, verbose_name='Référence SRA')), ('departments_label', models.TextField(blank=True, help_text='Cached values get from associated departments', null=True, verbose_name='Departments')), ('towns_label', models.TextField(blank=True, help_text='Cached values get from associated towns', null=True, verbose_name='Towns')), ('history_id', models.AutoField(primary_key=True, serialize=False)), ('history_date', models.DateTimeField()), ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), ('act_type', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_operations.ActType')), ('associated_file', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_files.File')), ('history_creator', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), ('history_modifier', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), ('in_charge', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Person')), ('lock_user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'historical Administrative act', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date', }, ), migrations.CreateModel( name='HistoricalArchaeologicalSite', fields=[ ('id', models.IntegerField(auto_created=True, blank=True, db_index=True, 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.TextField(blank=True, max_length=255, null=True)), ('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(blank=True, editable=False)), ('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')), ('reference', models.CharField(db_index=True, max_length=200, verbose_name='Reference')), ('other_reference', models.TextField(blank=True, null=True, verbose_name='Other reference')), ('name', models.CharField(blank=True, max_length=200, null=True, verbose_name='Name')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('locality_ngi', models.TextField(blank=True, null=True, verbose_name='National Geographic Institute locality')), ('locality_cadastral', models.TextField(blank=True, null=True, verbose_name='Cadastral locality')), ('shipwreck_name', models.TextField(blank=True, null=True, verbose_name='Shipwreck name')), ('oceanographic_service_localisation', models.TextField(blank=True, null=True, verbose_name='Oceanographic service localisation')), ('shipwreck_code', models.TextField(blank=True, null=True, verbose_name='Shipwreck code')), ('sinking_date', models.DateField(blank=True, null=True, verbose_name='Sinking date')), ('discovery_area', models.TextField(blank=True, null=True, verbose_name='Discovery area')), ('affmar_number', models.CharField(blank=True, max_length=100, null=True, verbose_name='AffMar number')), ('drassm_number', models.CharField(blank=True, max_length=100, null=True, verbose_name='DRASSM number')), ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')), ('cached_towns_label', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached town label')), ('cached_periods', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached periods label')), ('cached_remains', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached remains label')), ('history_id', models.AutoField(primary_key=True, serialize=False)), ('history_date', models.DateTimeField()), ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), ('history_creator', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), ('history_modifier', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), ('lock_user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), ('main_image', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Document')), ('spatial_reference_system', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.SpatialReferenceSystem')), ], options={ 'verbose_name': 'historical Archaeological site', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date', }, ), migrations.CreateModel( name='HistoricalOperation', fields=[ ('id', models.IntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')), ('relation_image', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated relation image (SVG)')), ('relation_bitmap_image', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated relation image (PNG)')), ('relation_dot', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated relation image (DOT)')), ('relation_image_above', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated above relation image (SVG)')), ('relation_dot_above', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated above relation image (DOT)')), ('relation_bitmap_image_above', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated above relation image (PNG)')), ('relation_image_below', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated below relation image (SVG)')), ('relation_dot_below', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated below relation image (DOT)')), ('relation_bitmap_image_below', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=100, null=True, verbose_name='Generated below relation image (PNG)')), ('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.TextField(blank=True, max_length=255, null=True)), ('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(blank=True, editable=False)), ('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')), ('uuid', models.UUIDField(default=uuid.uuid4)), ('creation_date', models.DateField(default=datetime.date.today, verbose_name='Creation date')), ('end_date', models.DateField(blank=True, null=True, verbose_name='Closing date')), ('start_date', models.DateField(blank=True, null=True, verbose_name='Start date')), ('excavation_end_date', models.DateField(blank=True, null=True, verbose_name='Excavation end date')), ('report_delivery_date', models.DateField(blank=True, null=True, verbose_name='Report delivery date')), ('year', models.IntegerField(blank=True, null=True, verbose_name='Year')), ('operation_code', models.IntegerField(blank=True, null=True, verbose_name='Numeric reference')), ('surface', models.IntegerField(blank=True, null=True, verbose_name='Surface (m2)')), ('cost', models.IntegerField(blank=True, null=True, verbose_name='Cost (euros)')), ('scheduled_man_days', models.IntegerField(blank=True, null=True, verbose_name='Scheduled man-days')), ('optional_man_days', models.IntegerField(blank=True, null=True, verbose_name='Optional man-days')), ('effective_man_days', models.IntegerField(blank=True, null=True, verbose_name='Effective man-days')), ('old_code', models.CharField(blank=True, max_length=200, null=True, verbose_name='Old code')), ('code_patriarche', models.TextField(blank=True, db_index=True, null=True, verbose_name='Code PATRIARCHE')), ('fnap_financing', models.FloatField(blank=True, null=True, verbose_name='Financement FNAP (%)')), ('fnap_cost', models.IntegerField(blank=True, null=True, verbose_name='Financement FNAP (€)')), ('zoning_prescription', models.NullBooleanField(verbose_name='Prescription on zoning')), ('large_area_prescription', models.NullBooleanField(verbose_name='Prescription on large area')), ('geoarchaeological_context_prescription', models.NullBooleanField(verbose_name='Prescription on geoarchaeological context')), ('negative_result', models.NullBooleanField(verbose_name='Résultat considéré comme négatif')), ('cira_date', models.DateField(blank=True, null=True, verbose_name='Date avis CIRA')), ('eas_number', models.CharField(blank=True, max_length=20, null=True, verbose_name="Numéro de l'EA")), ('operator_reference', models.CharField(blank=True, max_length=20, null=True, verbose_name='Operator reference')), ('common_name', models.TextField(blank=True, null=True, verbose_name='Generic name')), ('address', models.TextField(blank=True, null=True, verbose_name='Address / Locality')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('scientific_documentation_comment', models.TextField(blank=True, null=True, verbose_name='Comment about scientific documentation')), ('cached_label', models.CharField(blank=True, db_index=True, max_length=500, null=True, verbose_name='Cached name')), ('virtual_operation', models.BooleanField(default=False, help_text='If checked, it means that this operation have not been officialy registered.', verbose_name='Virtual operation')), ('abstract', models.TextField(blank=True, null=True, verbose_name='Abstract')), ('documentation_deadline', models.DateField(blank=True, null=True, verbose_name='Deadline for submission of the documentation')), ('documentation_received', models.NullBooleanField(verbose_name='Documentation received')), ('finds_deadline', models.DateField(blank=True, null=True, verbose_name='Deadline for submission of the finds')), ('finds_received', models.NullBooleanField(verbose_name='Finds received')), ('drassm_code', models.CharField(blank=True, max_length=100, null=True, verbose_name='DRASSM code')), ('seizure_name', models.TextField(blank=True, null=True, verbose_name='Seizure name')), ('official_report_number', models.TextField(blank=True, null=True, verbose_name='Official report number')), ('cached_towns_label', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached town label')), ('cached_periods', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached periods label')), ('cached_remains', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached remains label')), ('history_id', models.AutoField(primary_key=True, serialize=False)), ('history_date', models.DateTimeField()), ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), ('applicant_authority', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Organization')), ('associated_file', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_files.File')), ('cira_rapporteur', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Person')), ('history_creator', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), ('history_modifier', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), ('in_charge', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Person')), ('lock_user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), ('main_image', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Document')), ('minutes_writer', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Person')), ('operation_type', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.OperationType')), ('operator', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Organization')), ('protagonist', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Person')), ], options={ 'verbose_name': 'historical Operation', 'ordering': ('-history_date', '-history_id'), 'get_latest_by': 'history_date', }, ), migrations.CreateModel( name='Operation', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('relation_image', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated relation image (SVG)')), ('relation_bitmap_image', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated relation image (PNG)')), ('relation_dot', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated relation image (DOT)')), ('relation_image_above', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated above relation image (SVG)')), ('relation_dot_above', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated above relation image (DOT)')), ('relation_bitmap_image_above', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated above relation image (PNG)')), ('relation_image_below', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated below relation image (SVG)')), ('relation_dot_below', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated below relation image (DOT)')), ('relation_bitmap_image_below', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', null=True, upload_to=ishtar_common.models.get_image_path, verbose_name='Generated below relation image (PNG)')), ('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')), ('uuid', models.UUIDField(default=uuid.uuid4)), ('creation_date', models.DateField(default=datetime.date.today, verbose_name='Creation date')), ('end_date', models.DateField(blank=True, null=True, verbose_name='Closing date')), ('start_date', models.DateField(blank=True, null=True, verbose_name='Start date')), ('excavation_end_date', models.DateField(blank=True, null=True, verbose_name='Excavation end date')), ('report_delivery_date', models.DateField(blank=True, null=True, verbose_name='Report delivery date')), ('year', models.IntegerField(blank=True, null=True, verbose_name='Year')), ('operation_code', models.IntegerField(blank=True, null=True, verbose_name='Numeric reference')), ('surface', models.IntegerField(blank=True, null=True, verbose_name='Surface (m2)')), ('cost', models.IntegerField(blank=True, null=True, verbose_name='Cost (euros)')), ('scheduled_man_days', models.IntegerField(blank=True, null=True, verbose_name='Scheduled man-days')), ('optional_man_days', models.IntegerField(blank=True, null=True, verbose_name='Optional man-days')), ('effective_man_days', models.IntegerField(blank=True, null=True, verbose_name='Effective man-days')), ('old_code', models.CharField(blank=True, max_length=200, null=True, verbose_name='Old code')), ('code_patriarche', models.TextField(blank=True, null=True, unique=True, verbose_name='Code PATRIARCHE')), ('fnap_financing', models.FloatField(blank=True, null=True, verbose_name='Financement FNAP (%)')), ('fnap_cost', models.IntegerField(blank=True, null=True, verbose_name='Financement FNAP (€)')), ('zoning_prescription', models.NullBooleanField(verbose_name='Prescription on zoning')), ('large_area_prescription', models.NullBooleanField(verbose_name='Prescription on large area')), ('geoarchaeological_context_prescription', models.NullBooleanField(verbose_name='Prescription on geoarchaeological context')), ('negative_result', models.NullBooleanField(verbose_name='Résultat considéré comme négatif')), ('cira_date', models.DateField(blank=True, null=True, verbose_name='Date avis CIRA')), ('eas_number', models.CharField(blank=True, max_length=20, null=True, verbose_name="Numéro de l'EA")), ('operator_reference', models.CharField(blank=True, max_length=20, null=True, verbose_name='Operator reference')), ('common_name', models.TextField(blank=True, null=True, verbose_name='Generic name')), ('address', models.TextField(blank=True, null=True, verbose_name='Address / Locality')), ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), ('scientific_documentation_comment', models.TextField(blank=True, null=True, verbose_name='Comment about scientific documentation')), ('cached_label', models.CharField(blank=True, db_index=True, max_length=500, null=True, verbose_name='Cached name')), ('virtual_operation', models.BooleanField(default=False, help_text='If checked, it means that this operation have not been officialy registered.', verbose_name='Virtual operation')), ('abstract', models.TextField(blank=True, null=True, verbose_name='Abstract')), ('documentation_deadline', models.DateField(blank=True, null=True, verbose_name='Deadline for submission of the documentation')), ('documentation_received', models.NullBooleanField(verbose_name='Documentation received')), ('finds_deadline', models.DateField(blank=True, null=True, verbose_name='Deadline for submission of the finds')), ('finds_received', models.NullBooleanField(verbose_name='Finds received')), ('drassm_code', models.CharField(blank=True, max_length=100, null=True, verbose_name='DRASSM code')), ('seizure_name', models.TextField(blank=True, null=True, verbose_name='Seizure name')), ('official_report_number', models.TextField(blank=True, null=True, verbose_name='Official report number')), ('cached_towns_label', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached town label')), ('cached_periods', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached periods label')), ('cached_remains', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached remains label')), ('applicant_authority', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='operation_applicant_authority', to='ishtar_common.Organization', verbose_name='Applicant authority')), ('archaeological_sites', models.ManyToManyField(blank=True, related_name='operations', to='archaeological_operations.ArchaeologicalSite', verbose_name='Archaeological sites')), ('associated_file', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='operations', to='archaeological_files.File', verbose_name='File')), ('cira_rapporteur', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='cira_rapporteur', to='ishtar_common.Person', verbose_name='Rapporteur CIRA')), ('collaborators', models.ManyToManyField(blank=True, related_name='operation_collaborator', to='ishtar_common.Person', verbose_name='Collaborators')), ('documents', models.ManyToManyField(blank=True, related_name='operations', to='ishtar_common.Document', verbose_name='Documents')), ('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_operations_operation', to='ishtar_common.Import')), ('in_charge', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='operation_responsability', to='ishtar_common.Person', verbose_name='In charge')), ('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')), ('main_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_image_operations', to='ishtar_common.Document', verbose_name='Main image')), ('minutes_writer', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='minutes_writer', to='ishtar_common.Person', verbose_name='Writer of the minutes')), ('operation_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='ishtar_common.OperationType', verbose_name='Operation type')), ('operator', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='operator', to='ishtar_common.Organization', verbose_name='Operator')), ], options={ 'verbose_name': 'Operation', 'verbose_name_plural': 'Operations', 'ordering': ('cached_label',), 'permissions': (('view_own_operation', 'Can view own Operation'), ('add_own_operation', 'Can add own Operation'), ('change_own_operation', 'Can change own Operation'), ('delete_own_operation', 'Can delete own Operation'), ('close_operation', 'Can close Operation')), }, bases=(archaeological_operations.models.ClosedItem, ishtar_common.models.DocumentItem, ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, ishtar_common.models.OwnPerms, ishtar_common.models.ValueGetter, ishtar_common.models.MainItem, ishtar_common.models.DashboardFormItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models_common.FixAssociated, ishtar_common.models.ImageContainerModel), ), migrations.CreateModel( name='OperationTypeOld', 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')), ('order', models.IntegerField(default=1, verbose_name='Order')), ('preventive', models.BooleanField(default=True, verbose_name='Is preventive')), ], options={ 'verbose_name': 'Operation type old', 'verbose_name_plural': 'Operation types old', 'ordering': ['-preventive', 'order', 'label'], }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.CreateModel( name='Parcel', 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)), ('uuid', models.UUIDField(default=uuid.uuid4)), ('year', models.IntegerField(blank=True, null=True, verbose_name='Year')), ('section', models.CharField(blank=True, max_length=4, null=True, verbose_name='Section')), ('parcel_number', models.CharField(blank=True, max_length=6, null=True, verbose_name='Parcel number')), ('public_domain', models.BooleanField(default=False, verbose_name='Public domain')), ('external_id', models.CharField(blank=True, max_length=100, null=True, verbose_name='External ID')), ('auto_external_id', models.BooleanField(default=False, verbose_name='External ID is set automatically')), ('address', models.TextField(blank=True, null=True, verbose_name='Address - Locality')), ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')), ('associated_file', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parcels', to='archaeological_files.File', verbose_name='File')), ('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_operations_parcel', 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')), ('operation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parcels', to='archaeological_operations.Operation', verbose_name='Operation')), ('town', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='parcels', to='ishtar_common.Town', verbose_name='Town')), ], options={ 'verbose_name': 'Parcel', 'verbose_name_plural': 'Parcels', 'ordering': ('year', 'section', 'parcel_number'), }, bases=(ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models_common.FixAssociated), ), migrations.CreateModel( name='ParcelOwner', 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)), ('uuid', models.UUIDField(default=uuid.uuid4)), ('start_date', models.DateField(verbose_name='Start date')), ('end_date', models.DateField(verbose_name='End date')), ('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_operations_parcelowner', 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')), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='parcel_owner', to='ishtar_common.Person', verbose_name='Owner')), ('parcel', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owners', to='archaeological_operations.Parcel', verbose_name='Parcel')), ], options={ 'verbose_name': 'Parcel owner', 'verbose_name_plural': 'Parcel owners', }, bases=(ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models_common.FixAssociated), ), migrations.CreateModel( name='Period', 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')), ('order', models.IntegerField(verbose_name='Order')), ('start_date', models.IntegerField(blank=True, null=True, verbose_name='Start date')), ('end_date', models.IntegerField(blank=True, null=True, verbose_name='End date')), ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_operations.Period', verbose_name='Parent period')), ], options={ 'verbose_name': 'Type Period', 'verbose_name_plural': 'Types Period', 'ordering': ('order',), }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.CreateModel( name='RecordQualityType', 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')), ('order', models.IntegerField(verbose_name='Order')), ], options={ 'verbose_name': 'Type of record quality', 'verbose_name_plural': 'Types of record quality', 'ordering': ('order',), }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.CreateModel( name='RecordRelations', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('left_record', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='right_relations', to='archaeological_operations.Operation')), ], options={ 'verbose_name': 'Operation record relation', 'verbose_name_plural': 'Operation record relations', 'ordering': ('left_record', 'relation_type'), 'permissions': [('view_operationrelation', 'Can view all Operation relations')], }, bases=(ishtar_common.models.GeneralRecordRelations, models.Model), ), migrations.CreateModel( name='RelationType', 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')), ('order', models.IntegerField(default=1, verbose_name='Order')), ('symmetrical', models.BooleanField(verbose_name='Symmetrical')), ('tiny_label', models.CharField(blank=True, max_length=50, null=True, verbose_name='Tiny label')), ('logical_relation', models.CharField(blank=True, choices=[('above', 'Above'), ('below', 'Below'), ('equal', 'Equal')], max_length=10, null=True, verbose_name='Logical relation')), ('inverse_relation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='archaeological_operations.RelationType', verbose_name='Inverse relation')), ], options={ 'verbose_name': 'Operation relation type', 'verbose_name_plural': 'Operation relation types', 'ordering': ('order', 'label'), }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.CreateModel( name='RemainType', 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': 'Remain type', 'verbose_name_plural': 'Remain types', 'ordering': ('label',), }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.CreateModel( name='ReportState', 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')), ('order', models.IntegerField(verbose_name='Order')), ], options={ 'verbose_name': 'Type of report state', 'verbose_name_plural': 'Types of report state', 'ordering': ('order',), }, bases=(ishtar_common.models.Cached, models.Model), ), migrations.AddField( model_name='recordrelations', name='relation_type', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='archaeological_operations.RelationType'), ), migrations.AddField( model_name='recordrelations', name='right_record', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='left_relations', to='archaeological_operations.Operation'), ), migrations.AddField( model_name='operation', name='periods', field=models.ManyToManyField(blank=True, to='archaeological_operations.Period', verbose_name='Periods'), ), migrations.AddField( model_name='operation', name='protagonist', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='operation_protagonist', to='ishtar_common.Person', verbose_name='Name of the protagonist'), ), migrations.AddField( model_name='operation', name='record_quality_type', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_operations.RecordQualityType', verbose_name='Record quality'), ), migrations.AddField( model_name='operation', name='remains', field=models.ManyToManyField(blank=True, to='archaeological_operations.RemainType', verbose_name='Remains'), ), migrations.AddField( model_name='operation', name='report_processing', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_operations.ReportState', verbose_name='Report processing'), ), migrations.AddField( model_name='operation', name='scientist', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='operation_scientist_responsability', to='ishtar_common.Person', verbose_name='In charge scientist'), ), migrations.AddField( model_name='operation', 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='operation', name='top_sites', field=models.ManyToManyField(blank=True, related_name='top_operations', to='archaeological_operations.ArchaeologicalSite', verbose_name='Sites for which this operation is top operation'), ), migrations.AddField( model_name='operation', name='towns', field=models.ManyToManyField(related_name='operations', to='ishtar_common.Town', verbose_name='Towns'), ), migrations.AddField( model_name='historicaloperation', name='record_quality_type', field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_operations.RecordQualityType'), ), migrations.AddField( model_name='historicaloperation', name='report_processing', field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_operations.ReportState'), ), migrations.AddField( model_name='historicaloperation', name='scientist', field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Person'), ), migrations.AddField( model_name='historicaloperation', name='spatial_reference_system', field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.SpatialReferenceSystem'), ), migrations.AddField( model_name='historicaladministrativeact', name='operation', field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_operations.Operation'), ), migrations.AddField( model_name='historicaladministrativeact', name='operator', field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Organization'), ), migrations.AddField( model_name='historicaladministrativeact', name='scientist', field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Person'), ), migrations.AddField( model_name='historicaladministrativeact', name='signatory', field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Person'), ), migrations.AddField( model_name='archaeologicalsite', name='cultural_attributions', field=models.ManyToManyField(blank=True, to='archaeological_operations.CulturalAttributionType', verbose_name='Cultural attribution'), ), migrations.AddField( model_name='archaeologicalsite', name='documents', field=models.ManyToManyField(blank=True, related_name='sites', to='ishtar_common.Document', verbose_name='Documents'), ), migrations.AddField( model_name='archaeologicalsite', 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='archaeologicalsite', 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='archaeologicalsite', name='imports', field=models.ManyToManyField(blank=True, related_name='imported_archaeological_operations_archaeologicalsite', to='ishtar_common.Import'), ), migrations.AddField( model_name='archaeologicalsite', 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='archaeologicalsite', name='main_image', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_image_sites', to='ishtar_common.Document', verbose_name='Main image'), ), migrations.AddField( model_name='archaeologicalsite', name='periods', field=models.ManyToManyField(blank=True, to='archaeological_operations.Period', verbose_name='Periods'), ), migrations.AddField( model_name='archaeologicalsite', name='remains', field=models.ManyToManyField(blank=True, to='archaeological_operations.RemainType', verbose_name='Remains'), ), migrations.AddField( model_name='archaeologicalsite', 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='archaeologicalsite', name='towns', field=models.ManyToManyField(blank=True, related_name='sites', to='ishtar_common.Town', verbose_name='Towns'), ), migrations.AddField( model_name='administrativeact', name='operation', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='administrative_act', to='archaeological_operations.Operation', verbose_name='Operation'), ), migrations.AddField( model_name='administrativeact', name='operator', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='adminact_operator', to='ishtar_common.Organization', verbose_name='Archaeological preventive operator'), ), migrations.AddField( model_name='administrativeact', name='scientist', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='adminact_scientist', to='ishtar_common.Person', verbose_name='Scientist in charge'), ), migrations.AddField( model_name='administrativeact', name='signatory', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='signatory', to='ishtar_common.Person', verbose_name='Signatory'), ), migrations.AddIndex( model_name='parcelowner', index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='archaeologi_data_457021_gin'), ), migrations.AddIndex( model_name='parcel', index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='archaeologi_data_835f5e_gin'), ), migrations.AddIndex( model_name='operation', index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='archaeologi_data_8d8f9f_gin'), ), migrations.AddIndex( model_name='archaeologicalsite', index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='archaeologi_data_071fb5_gin'), ), migrations.AddIndex( model_name='administrativeact', index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='archaeologi_data_587bb3_gin'), ), migrations.RunSQL( archaeological_operations.models.OperationByDepartment.DELETE_SQL), migrations.RunSQL( archaeological_operations.models.OperationByDepartment.CREATE_SQL), ]