diff options
Diffstat (limited to 'archaeological_finds/migrations/0101_squashed.py')
| -rw-r--r-- | archaeological_finds/migrations/0101_squashed.py | 780 | 
1 files changed, 780 insertions, 0 deletions
diff --git a/archaeological_finds/migrations/0101_squashed.py b/archaeological_finds/migrations/0101_squashed.py new file mode 100644 index 000000000..069982355 --- /dev/null +++ b/archaeological_finds/migrations/0101_squashed.py @@ -0,0 +1,780 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-01-23 18:21 +from __future__ import unicode_literals + +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.search +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import ishtar_common.models +import ishtar_common.utils +import re +import uuid + + +class Migration(migrations.Migration): +    dependencies = [ +        migrations.swappable_dependency(settings.AUTH_USER_MODEL), +        ('ishtar_common', '0201_squashed'), +        ('archaeological_finds', '0080_auto_20191216_1040'), +    ] + +    operations = [ +        migrations.CreateModel( +            name='AlterationCauseType', +            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': 'Alteration cause type', +                'verbose_name_plural': 'Alteration cause types', +                'ordering': ('parent__label', 'label'), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='AlterationType', +            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': 'Alteration type', +                'verbose_name_plural': 'Alteration types', +                'ordering': ('parent__label', 'label'), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='BaseFind', +            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')), +                ('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)), +                ('label', models.TextField(verbose_name='Free ID')), +                ('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')), +                ('excavation_id', models.TextField(blank=True, null=True, verbose_name='Excavation ID')), +                ('description', models.TextField(blank=True, null=True, verbose_name='Description')), +                ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), +                ('special_interest', models.CharField(blank=True, max_length=120, null=True, verbose_name='Special interest')), +                ('discovery_date', models.DateField(blank=True, null=True, verbose_name='Discovery date (exact or TPQ)')), +                ('discovery_date_taq', models.DateField(blank=True, null=True, verbose_name='Discovery date (TAQ)')), +                ('index', models.IntegerField(default=0, verbose_name='Index')), +                ('material_index', models.IntegerField(default=0, verbose_name='Material index')), +                ('topographic_localisation', models.CharField(blank=True, max_length=120, null=True, verbose_name='Point of topographic reference')), +                ('line', django.contrib.gis.db.models.fields.LineStringField(blank=True, null=True, srid=4326, verbose_name='Line')), +                ('cache_short_id', models.TextField(blank=True, db_index=True, help_text='Cached value - do not edit', null=True, verbose_name='Short ID')), +                ('cache_complete_id', models.TextField(blank=True, db_index=True, help_text='Cached value - do not edit', null=True, verbose_name='Complete ID')), +            ], +            options={ +                'verbose_name': 'Base find', +                'verbose_name_plural': 'Base finds', +                'permissions': (('view_basefind', 'Can view all Base finds'), ('view_own_basefind', 'Can view own Base find'), ('add_own_basefind', 'Can add own Base find'), ('change_own_basefind', 'Can change own Base find'), ('delete_own_basefind', 'Can delete own Base find')), +            }, +            bases=(ishtar_common.models.BulkUpdatedItem, ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models.FixAssociated, ishtar_common.models.CascasdeUpdate, ishtar_common.models.OwnPerms, ishtar_common.models.ValueGetter), +        ), +        migrations.CreateModel( +            name='BatchType', +            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')), +            ], +            options={ +                'verbose_name': 'Batch type', +                'verbose_name_plural': 'Batch types', +                'ordering': ('order',), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='CheckedType', +            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')), +            ], +            options={ +                'verbose_name': 'Checked type', +                'verbose_name_plural': 'Checked types', +                'ordering': ('order',), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='CommunicabilityType', +            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': 'Communicability type', +                'verbose_name_plural': 'Communicability types', +                'ordering': ('parent__label', 'label'), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='ConservatoryState', +            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')), +            ], +            options={ +                'verbose_name': 'Conservatory state type', +                'verbose_name_plural': 'Conservatory state types', +                'ordering': ('order', 'label'), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='Find', +            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)), +                ('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)), +                ('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')), +                ('seal_number', models.TextField(blank=True, null=True, verbose_name='Seal number')), +                ('order', models.IntegerField(default=1, verbose_name='Order')), +                ('label', models.TextField(verbose_name='Free ID')), +                ('denomination', models.TextField(blank=True, null=True, verbose_name='Denomination')), +                ('museum_id', models.TextField(blank=True, null=True, verbose_name='Museum ID')), +                ('laboratory_id', models.TextField(blank=True, null=True, verbose_name='Laboratory ID')), +                ('description', models.TextField(blank=True, null=True, verbose_name='Description')), +                ('decoration', models.TextField(blank=True, null=True, verbose_name='Decoration')), +                ('inscription', models.TextField(blank=True, null=True, verbose_name='Inscription')), +                ('manufacturing_place', models.TextField(blank=True, null=True, verbose_name='Manufacturing place')), +                ('material_comment', models.TextField(blank=True, null=True, verbose_name='Comment on the material')), +                ('volume', models.FloatField(blank=True, null=True, verbose_name='Volume (l)')), +                ('weight', models.FloatField(blank=True, null=True, verbose_name='Weight')), +                ('weight_unit', models.CharField(blank=True, choices=[('g', 'g'), ('kg', 'kg')], max_length=4, null=True, verbose_name='Weight unit')), +                ('find_number', models.IntegerField(blank=True, null=True, verbose_name='Find number')), +                ('is_complete', models.NullBooleanField(verbose_name='Is complete?')), +                ('min_number_of_individuals', models.IntegerField(blank=True, null=True, verbose_name='Minimum number of individuals (MNI)')), +                ('length', models.FloatField(blank=True, null=True, verbose_name='Length (cm)')), +                ('width', models.FloatField(blank=True, null=True, verbose_name='Width (cm)')), +                ('height', models.FloatField(blank=True, null=True, verbose_name='Height (cm)')), +                ('diameter', models.FloatField(blank=True, null=True, verbose_name='Diameter (cm)')), +                ('circumference', models.FloatField(blank=True, null=True, verbose_name='Circumference (cm)')), +                ('thickness', models.FloatField(blank=True, null=True, verbose_name='Thickness (cm)')), +                ('clutter_long_side', models.FloatField(blank=True, null=True, verbose_name='Clutter - long side (cm)')), +                ('clutter_short_side', models.FloatField(blank=True, null=True, verbose_name='Clutter - short side (cm)')), +                ('clutter_height', models.FloatField(blank=True, null=True, verbose_name='Clutter - height (cm)')), +                ('dimensions_comment', models.TextField(blank=True, null=True, verbose_name='Dimensions comment')), +                ('mark', models.TextField(blank=True, null=True, verbose_name='Mark')), +                ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), +                ('dating_comment', models.TextField(blank=True, null=True, verbose_name='Comment on dating')), +                ('previous_id', models.TextField(blank=True, null=True, verbose_name='Previous ID')), +                ('index', models.IntegerField(default=0, verbose_name='Index')), +                ('check_date', models.DateField(default=datetime.date.today, verbose_name='Check date')), +                ('estimated_value', models.FloatField(blank=True, null=True, verbose_name='Estimated value')), +                ('conservatory_comment', models.TextField(blank=True, null=True, verbose_name='Conservatory comment')), +                ('insurance_value', models.FloatField(blank=True, null=True, verbose_name='Insurance value')), +                ('appraisal_date', models.DateField(blank=True, null=True, verbose_name='Appraisal date')), +                ('public_description', models.TextField(blank=True, null=True, verbose_name='Public description')), +                ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')), +                ('cached_periods', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached periods label')), +                ('cached_object_types', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached object types label')), +                ('cached_materials', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached material types label')), +            ], +            options={ +                'verbose_name': 'Find', +                'verbose_name_plural': 'Finds', +                'ordering': ('cached_label',), +                'permissions': (('view_find', 'Can view all Finds'), ('view_own_find', 'Can view own Find'), ('add_own_find', 'Can add own Find'), ('change_own_find', 'Can change own Find'), ('delete_own_find', 'Can delete own Find')), +            }, +            bases=(ishtar_common.models.BulkUpdatedItem, ishtar_common.models.ValueGetter, ishtar_common.models.DocumentItem, ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models.FixAssociated, ishtar_common.models.CascasdeUpdate, ishtar_common.models.ImageContainerModel, ishtar_common.models.OwnPerms, ishtar_common.models.MainItem), +        ), +        migrations.CreateModel( +            name='FindBasket', +            fields=[ +                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), +                ('search_vector', django.contrib.postgres.search.SearchVectorField(blank=True, help_text='Auto filled at save', null=True, verbose_name='Search vector')), +                ('uuid', models.UUIDField(default=uuid.uuid4)), +                ('label', models.CharField(max_length=1000, verbose_name='Label')), +                ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), +                ('slug', models.SlugField(blank=True, null=True, verbose_name='Slug')), +                ('public', models.BooleanField(default=False, verbose_name='Public')), +                ('available', models.BooleanField(default=True, verbose_name='Available')), +            ], +            options={ +                'verbose_name': 'Basket', +                'ordering': ('label',), +                'permissions': (('view_find', 'Can view all Finds'), ('view_own_find', 'Can view own Find')), +            }, +            bases=(models.Model, ishtar_common.models.OwnPerms, ishtar_common.models.MainItem, ishtar_common.models.ValueGetter, ishtar_common.models.TemplateItem), +        ), +        migrations.CreateModel( +            name='HistoricalBaseFind', +            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')), +                ('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)), +                ('label', models.TextField(verbose_name='Free ID')), +                ('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')), +                ('excavation_id', models.TextField(blank=True, null=True, verbose_name='Excavation ID')), +                ('description', models.TextField(blank=True, null=True, verbose_name='Description')), +                ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), +                ('special_interest', models.CharField(blank=True, max_length=120, null=True, verbose_name='Special interest')), +                ('discovery_date', models.DateField(blank=True, null=True, verbose_name='Discovery date (exact or TPQ)')), +                ('discovery_date_taq', models.DateField(blank=True, null=True, verbose_name='Discovery date (TAQ)')), +                ('index', models.IntegerField(default=0, verbose_name='Index')), +                ('material_index', models.IntegerField(default=0, verbose_name='Material index')), +                ('topographic_localisation', models.CharField(blank=True, max_length=120, null=True, verbose_name='Point of topographic reference')), +                ('line', django.contrib.gis.db.models.fields.LineStringField(blank=True, null=True, srid=4326, verbose_name='Line')), +                ('cache_short_id', models.TextField(blank=True, db_index=True, help_text='Cached value - do not edit', null=True, verbose_name='Short ID')), +                ('cache_complete_id', models.TextField(blank=True, db_index=True, help_text='Cached value - do not edit', null=True, verbose_name='Complete ID')), +                ('history_id', models.AutoField(primary_key=True, serialize=False)), +                ('history_date', models.DateTimeField()), +                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), +            ], +            options={ +                'verbose_name': 'historical Base find', +                'ordering': ('-history_date', '-history_id'), +                'get_latest_by': 'history_date', +            }, +        ), +        migrations.CreateModel( +            name='HistoricalFind', +            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)), +                ('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)), +                ('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')), +                ('seal_number', models.TextField(blank=True, null=True, verbose_name='Seal number')), +                ('order', models.IntegerField(default=1, verbose_name='Order')), +                ('label', models.TextField(verbose_name='Free ID')), +                ('denomination', models.TextField(blank=True, null=True, verbose_name='Denomination')), +                ('museum_id', models.TextField(blank=True, null=True, verbose_name='Museum ID')), +                ('laboratory_id', models.TextField(blank=True, null=True, verbose_name='Laboratory ID')), +                ('description', models.TextField(blank=True, null=True, verbose_name='Description')), +                ('decoration', models.TextField(blank=True, null=True, verbose_name='Decoration')), +                ('inscription', models.TextField(blank=True, null=True, verbose_name='Inscription')), +                ('manufacturing_place', models.TextField(blank=True, null=True, verbose_name='Manufacturing place')), +                ('material_comment', models.TextField(blank=True, null=True, verbose_name='Comment on the material')), +                ('volume', models.FloatField(blank=True, null=True, verbose_name='Volume (l)')), +                ('weight', models.FloatField(blank=True, null=True, verbose_name='Weight')), +                ('weight_unit', models.CharField(blank=True, choices=[('g', 'g'), ('kg', 'kg')], max_length=4, null=True, verbose_name='Weight unit')), +                ('find_number', models.IntegerField(blank=True, null=True, verbose_name='Find number')), +                ('is_complete', models.NullBooleanField(verbose_name='Is complete?')), +                ('min_number_of_individuals', models.IntegerField(blank=True, null=True, verbose_name='Minimum number of individuals (MNI)')), +                ('length', models.FloatField(blank=True, null=True, verbose_name='Length (cm)')), +                ('width', models.FloatField(blank=True, null=True, verbose_name='Width (cm)')), +                ('height', models.FloatField(blank=True, null=True, verbose_name='Height (cm)')), +                ('diameter', models.FloatField(blank=True, null=True, verbose_name='Diameter (cm)')), +                ('circumference', models.FloatField(blank=True, null=True, verbose_name='Circumference (cm)')), +                ('thickness', models.FloatField(blank=True, null=True, verbose_name='Thickness (cm)')), +                ('clutter_long_side', models.FloatField(blank=True, null=True, verbose_name='Clutter - long side (cm)')), +                ('clutter_short_side', models.FloatField(blank=True, null=True, verbose_name='Clutter - short side (cm)')), +                ('clutter_height', models.FloatField(blank=True, null=True, verbose_name='Clutter - height (cm)')), +                ('dimensions_comment', models.TextField(blank=True, null=True, verbose_name='Dimensions comment')), +                ('mark', models.TextField(blank=True, null=True, verbose_name='Mark')), +                ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), +                ('dating_comment', models.TextField(blank=True, null=True, verbose_name='Comment on dating')), +                ('previous_id', models.TextField(blank=True, null=True, verbose_name='Previous ID')), +                ('index', models.IntegerField(default=0, verbose_name='Index')), +                ('check_date', models.DateField(default=datetime.date.today, verbose_name='Check date')), +                ('estimated_value', models.FloatField(blank=True, null=True, verbose_name='Estimated value')), +                ('conservatory_comment', models.TextField(blank=True, null=True, verbose_name='Conservatory comment')), +                ('insurance_value', models.FloatField(blank=True, null=True, verbose_name='Insurance value')), +                ('appraisal_date', models.DateField(blank=True, null=True, verbose_name='Appraisal date')), +                ('public_description', models.TextField(blank=True, null=True, verbose_name='Public description')), +                ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')), +                ('cached_periods', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached periods label')), +                ('cached_object_types', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached object types label')), +                ('cached_materials', models.TextField(blank=True, help_text='Generated automatically - do not edit', null=True, verbose_name='Cached material types 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)), +            ], +            options={ +                'verbose_name': 'historical Find', +                'ordering': ('-history_date', '-history_id'), +                'get_latest_by': 'history_date', +            }, +        ), +        migrations.CreateModel( +            name='HistoricalTreatment', +            fields=[ +                ('id', models.IntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')), +                ('image', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=255, null=True)), +                ('thumbnail', models.TextField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=255, null=True)), +                ('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')), +                ('label', models.CharField(blank=True, max_length=200, null=True, verbose_name='Label')), +                ('other_reference', models.CharField(blank=True, max_length=200, null=True, verbose_name='Other ref.')), +                ('year', models.IntegerField(default=ishtar_common.utils.get_current_year, verbose_name='Year')), +                ('index', models.IntegerField(default=1, verbose_name='Index')), +                ('executed', models.BooleanField(default=False, verbose_name='Treatment have been executed')), +                ('external_id', models.CharField(blank=True, max_length=200, null=True, verbose_name='External ID')), +                ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), +                ('description', models.TextField(blank=True, null=True, verbose_name='Description')), +                ('goal', models.TextField(blank=True, null=True, verbose_name='Goal')), +                ('start_date', models.DateField(blank=True, null=True, verbose_name='Start date')), +                ('end_date', models.DateField(blank=True, null=True, verbose_name='Closing date')), +                ('creation_date', models.DateTimeField(default=datetime.datetime.now)), +                ('estimated_cost', models.FloatField(blank=True, null=True, verbose_name='Estimated cost')), +                ('quoted_cost', models.FloatField(blank=True, null=True, verbose_name='Quoted cost')), +                ('realized_cost', models.FloatField(blank=True, null=True, verbose_name='Realized cost')), +                ('insurance_cost', models.FloatField(blank=True, null=True, verbose_name='Insurance cost')), +                ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')), +                ('history_id', models.AutoField(primary_key=True, serialize=False)), +                ('history_date', models.DateTimeField()), +                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), +            ], +            options={ +                'verbose_name': 'historical Treatment', +                'ordering': ('-history_date', '-history_id'), +                'get_latest_by': 'history_date', +            }, +        ), +        migrations.CreateModel( +            name='HistoricalTreatmentFile', +            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')), +                ('year', models.IntegerField(default=ishtar_common.utils.get_current_year, verbose_name='Year')), +                ('index', models.IntegerField(default=1, verbose_name='Index')), +                ('internal_reference', models.CharField(blank=True, max_length=200, null=True, verbose_name='Internal reference')), +                ('external_id', models.CharField(blank=True, max_length=200, null=True, verbose_name='External ID')), +                ('name', models.TextField(blank=True, null=True, verbose_name='Name')), +                ('end_date', models.DateField(blank=True, null=True, verbose_name='Closing date')), +                ('creation_date', models.DateField(blank=True, default=datetime.date.today, null=True, verbose_name='Creation date')), +                ('reception_date', models.DateField(blank=True, null=True, verbose_name='Reception date')), +                ('exhibition_name', models.TextField(blank=True, null=True, verbose_name='Exhibition name')), +                ('exhibition_start_date', models.DateField(blank=True, null=True, verbose_name='Exhibition start date')), +                ('exhibition_end_date', models.DateField(blank=True, null=True, verbose_name='Exhibition end date')), +                ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), +                ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')), +                ('history_id', models.AutoField(primary_key=True, serialize=False)), +                ('history_date', models.DateTimeField()), +                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), +            ], +            options={ +                'verbose_name': 'historical Treatment request', +                'ordering': ('-history_date', '-history_id'), +                'get_latest_by': 'history_date', +            }, +        ), +        migrations.CreateModel( +            name='IntegrityType', +            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': 'Integrity / interest type', +                'verbose_name_plural': 'Integrity / interest types', +                'ordering': ('label',), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='MaterialType', +            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')), +                ('code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Code')), +                ('recommendation', models.TextField(blank=True, null=True, verbose_name='Recommendation')), +            ], +            options={ +                'verbose_name': 'Material type', +                'verbose_name_plural': 'Material types', +                'ordering': ('label',), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='MaterialTypeQualityType', +            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')), +            ], +            options={ +                'verbose_name': 'Material type quality type', +                'verbose_name_plural': 'Material type quality types', +                'ordering': ('order',), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='ObjectType', +            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': 'Object type', +                'verbose_name_plural': 'Object types', +                'ordering': ('parent__label', 'label'), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='ObjectTypeQualityType', +            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')), +            ], +            options={ +                'verbose_name': 'Object type quality type', +                'verbose_name_plural': 'Object type quality types', +                'ordering': ('order',), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='Property', +            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)), +                ('start_date', models.DateField(verbose_name='Start date')), +                ('end_date', models.DateField(verbose_name='End date')), +            ], +            options={ +                'verbose_name': 'Property', +                'verbose_name_plural': 'Properties', +            }, +            bases=(ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models.FixAssociated, ishtar_common.models.CascasdeUpdate), +        ), +        migrations.CreateModel( +            name='RemarkabilityType', +            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': 'Remarkability type', +                'verbose_name_plural': 'Remarkability types', +                'ordering': ('label',), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='Treatment', +            fields=[ +                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), +                ('image', models.ImageField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=255, null=True, upload_to=ishtar_common.models.get_image_path)), +                ('thumbnail', models.ImageField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=255, null=True, upload_to=ishtar_common.models.get_image_path)), +                ('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')), +                ('label', models.CharField(blank=True, max_length=200, null=True, verbose_name='Label')), +                ('other_reference', models.CharField(blank=True, max_length=200, null=True, verbose_name='Other ref.')), +                ('year', models.IntegerField(default=ishtar_common.utils.get_current_year, verbose_name='Year')), +                ('index', models.IntegerField(default=1, verbose_name='Index')), +                ('executed', models.BooleanField(default=False, verbose_name='Treatment have been executed')), +                ('external_id', models.CharField(blank=True, max_length=200, null=True, verbose_name='External ID')), +                ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), +                ('description', models.TextField(blank=True, null=True, verbose_name='Description')), +                ('goal', models.TextField(blank=True, null=True, verbose_name='Goal')), +                ('start_date', models.DateField(blank=True, null=True, verbose_name='Start date')), +                ('end_date', models.DateField(blank=True, null=True, verbose_name='Closing date')), +                ('creation_date', models.DateTimeField(default=datetime.datetime.now)), +                ('estimated_cost', models.FloatField(blank=True, null=True, verbose_name='Estimated cost')), +                ('quoted_cost', models.FloatField(blank=True, null=True, verbose_name='Quoted cost')), +                ('realized_cost', models.FloatField(blank=True, null=True, verbose_name='Realized cost')), +                ('insurance_cost', models.FloatField(blank=True, null=True, verbose_name='Insurance cost')), +                ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')), +            ], +            options={ +                'verbose_name': 'Treatment', +                'verbose_name_plural': 'Treatments', +                'ordering': ('-year', '-index', '-start_date'), +                'permissions': (('view_treatment', 'Can view all Treatments'), ('view_own_treatment', 'Can view own Treatment'), ('add_own_treatment', 'Can add own Treatment'), ('change_own_treatment', 'Can change own Treatment'), ('delete_own_treatment', 'Can delete own Treatment')), +            }, +            bases=(ishtar_common.models.DashboardFormItem, ishtar_common.models.ValueGetter, ishtar_common.models.DocumentItem, ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models.FixAssociated, ishtar_common.models.CascasdeUpdate, ishtar_common.models.ImageContainerModel, ishtar_common.models.OwnPerms, ishtar_common.models.ShortMenuItem), +        ), +        migrations.CreateModel( +            name='TreatmentEmergencyType', +            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': 'Treatment emergency type', +                'verbose_name_plural': 'Treatment emergency types', +                'ordering': ('label',), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='TreatmentFile', +            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')), +                ('year', models.IntegerField(default=ishtar_common.utils.get_current_year, verbose_name='Year')), +                ('index', models.IntegerField(default=1, verbose_name='Index')), +                ('internal_reference', models.CharField(blank=True, max_length=200, null=True, verbose_name='Internal reference')), +                ('external_id', models.CharField(blank=True, max_length=200, null=True, verbose_name='External ID')), +                ('name', models.TextField(blank=True, null=True, verbose_name='Name')), +                ('end_date', models.DateField(blank=True, null=True, verbose_name='Closing date')), +                ('creation_date', models.DateField(blank=True, default=datetime.date.today, null=True, verbose_name='Creation date')), +                ('reception_date', models.DateField(blank=True, null=True, verbose_name='Reception date')), +                ('exhibition_name', models.TextField(blank=True, null=True, verbose_name='Exhibition name')), +                ('exhibition_start_date', models.DateField(blank=True, null=True, verbose_name='Exhibition start date')), +                ('exhibition_end_date', models.DateField(blank=True, null=True, verbose_name='Exhibition end date')), +                ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), +                ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')), +                ('applicant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='treatmentfile_applicant', to='ishtar_common.Person', verbose_name='Applicant')), +                ('applicant_organisation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='treatmentfile_applicant', to='ishtar_common.Organization', verbose_name='Applicant organisation')), +                ('associated_basket', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='treatment_files', to='archaeological_finds.FindBasket')), +                ('documents', models.ManyToManyField(blank=True, related_name='treatment_files', 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_finds_treatmentfile', to='ishtar_common.Import')), +                ('in_charge', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='treatmentfile_responsability', to='ishtar_common.Person', verbose_name='Person 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_treatment_files', to='ishtar_common.Document', verbose_name='Main image')), +            ], +            options={ +                'verbose_name': 'Treatment request', +                'verbose_name_plural': 'Treatment requests', +                'ordering': ('cached_label',), +                'permissions': (('view_treatmentfile', 'Can view all Treatment requests'), ('view_own_treatmentfile', 'Can view own Treatment request'), ('add_own_treatmentfile', 'Can add own Treatment request'), ('change_own_treatmentfile', 'Can change own Treatment request'), ('delete_own_treatmentfile', 'Can delete own Treatment request')), +            }, +            bases=(ishtar_common.models.DashboardFormItem, archaeological_operations.models.ClosedItem, ishtar_common.models.DocumentItem, ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, models.Model, ishtar_common.models.CachedGen, ishtar_common.models.FixAssociated, ishtar_common.models.CascasdeUpdate, ishtar_common.models.OwnPerms, ishtar_common.models.ValueGetter, ishtar_common.models.ShortMenuItem), +        ), +        migrations.CreateModel( +            name='TreatmentFileType', +            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': 'Treatment request type', +                'verbose_name_plural': 'Treatment request types', +                'ordering': ('label',), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='TreatmentState', +            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')), +                ('executed', models.BooleanField(default=False, verbose_name='Treatment is executed')), +                ('order', models.IntegerField(default=10, verbose_name='Order')), +            ], +            options={ +                'verbose_name': 'Treatment state type', +                'verbose_name_plural': 'Treatment state types', +                'ordering': ('order', 'label'), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='TreatmentType', +            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')), +                ('virtual', models.BooleanField(verbose_name='Virtual')), +                ('destructive', models.BooleanField(default=False, verbose_name='Destructive')), +                ('create_new_find', models.BooleanField(default=False, help_text='If True when this treatment is applied a new version of the object will be created.', verbose_name='Create a new find')), +                ('upstream_is_many', models.BooleanField(default=False, help_text="Check this if for this treatment from many finds you'll get one.", verbose_name='Upstream is many')), +                ('downstream_is_many', models.BooleanField(default=False, help_text="Check this if for this treatment from one find you'll get many.", verbose_name='Downstream is many')), +                ('change_reference_location', models.BooleanField(default=False, help_text='The treatment change the reference location.', verbose_name='Change reference location')), +                ('change_current_location', models.BooleanField(default=False, help_text='The treatment change the current location.', verbose_name='Change current location')), +                ('restore_reference_location', models.BooleanField(default=False, help_text='The treatment change restore reference location to the current location.', verbose_name='Restore the reference location')), +                ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.TreatmentType', verbose_name='Parent')), +            ], +            options={ +                'verbose_name': 'Treatment type', +                'verbose_name_plural': 'Treatment types', +                'ordering': ('order', 'label'), +            }, +            bases=(ishtar_common.models.Cached, models.Model), +        ), +        migrations.CreateModel( +            name='FindDownstreamTreatments', +            fields=[ +                ('treatment', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='archaeological_finds.Treatment', verbose_name='Treatment')), +                ('treatment_nb', models.IntegerField(verbose_name='Order')), +            ], +            options={ +                'db_table': 'find_downtreatments', +                'ordering': ('find', '-treatment_nb'), +                'managed': False, +            }, +        ), +        migrations.CreateModel( +            name='FindNonModifTreatments', +            fields=[ +                ('treatment', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='archaeological_finds.Treatment', verbose_name='Treatment')), +                ('treatment_nb', models.IntegerField(verbose_name='Order')), +            ], +            options={ +                'db_table': 'find_nonmodif_treatments', +                'ordering': ('find', '-treatment_nb'), +                'managed': False, +            }, +        ), +        migrations.CreateModel( +            name='FindTreatments', +            fields=[ +                ('treatment', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='archaeological_finds.Treatment', verbose_name='Treatment')), +                ('treatment_nb', models.IntegerField(verbose_name='Order')), +                ('upstream', models.BooleanField(verbose_name='Is upstream')), +            ], +            options={ +                'db_table': 'find_treatments', +                'ordering': ('find', 'upstream', '-treatment_nb'), +                'managed': False, +            }, +        ), +        migrations.CreateModel( +            name='FindUpstreamTreatments', +            fields=[ +                ('treatment', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='archaeological_finds.Treatment', verbose_name='Treatment')), +                ('treatment_nb', models.IntegerField(verbose_name='Order')), +            ], +            options={ +                'db_table': 'find_uptreatments', +                'ordering': ('find', '-treatment_nb'), +                'managed': False, +            }, +        ), +        migrations.AddField( +            model_name='treatmentfiletype', +            name='treatment_type', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='archaeological_finds.TreatmentType'), +        ), +        migrations.AddField( +            model_name='treatmentfile', +            name='type', +            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='archaeological_finds.TreatmentFileType', verbose_name='Treatment request type'), +        ), +    ]  | 
