# Generated by Django 2.2.24 on 2022-03-28 12:22 from django.conf import settings import django.contrib.gis.db.models.fields import django.contrib.postgres.fields import django.contrib.postgres.fields.jsonb import django.core.validators from django.db import migrations, models import django.db.models.deletion import ishtar_common.models_common import re class Migration(migrations.Migration): dependencies = [ ('auth', '0011_update_proxy_permissions'), ('contenttypes', '0002_remove_content_type_name'), ('ishtar_common', '0216_auto_20210805_1703'), ] operations = [ migrations.CreateModel( name='ApiExternalSource', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('url', models.URLField(verbose_name='URL')), ('name', models.CharField(max_length=200, verbose_name='Name')), ('key', models.CharField(max_length=40, verbose_name='Key')), ('match_document', models.FileField(blank=True, help_text='First use the "Update types from source" action. Then use the action "Generate match document" action to create a default match document. Complete it and attach it back to the source to finally use the action "Update association from match document".', null=True, upload_to='', verbose_name='Match document')), ('users', models.ManyToManyField(blank=True, to='ishtar_common.IshtarUser')), ], options={ 'verbose_name': 'API - Search - External source', 'verbose_name_plural': 'API - Search - External sources', 'ordering': ('name',), }, ), migrations.CreateModel( name='ApiSearchModel', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('limit_query', models.TextField(blank=True, help_text='Search query add to each request', null=True, verbose_name='Limit query')), ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), ], options={ 'verbose_name': 'API - Remote access - Search model', 'verbose_name_plural': 'API - Remote access - Search models', }, ), migrations.CreateModel( name='ApiUser', fields=[ ('user_ptr', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='apiuser', serialize=False, to=settings.AUTH_USER_MODEL)), ('ip', models.GenericIPAddressField(verbose_name='IP')), ], options={ 'verbose_name': 'API - Remote access - User', 'verbose_name_plural': 'API - Remote access - Users', }, ), migrations.CreateModel( name='GeoDataType', 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'), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')), ('comment', models.TextField(blank=True, default='', 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='ishtar_common.GeoDataType', verbose_name='Parent')), ], options={ 'verbose_name': 'Geographic - Data type', 'verbose_name_plural': 'Geographic - Data types', 'ordering': ('order', 'label'), }, bases=(ishtar_common.models_common.Cached, models.Model), ), migrations.CreateModel( name='GeoOriginType', 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'), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')), ('comment', models.TextField(blank=True, default='', 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='ishtar_common.GeoOriginType', verbose_name='Parent')), ], options={ 'verbose_name': 'Geographic - Origin type', 'verbose_name_plural': 'Geographic - Origin types', 'ordering': ('order', 'label'), }, bases=(ishtar_common.models_common.Cached, models.Model), ), migrations.CreateModel( name='GeoProviderType', 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'), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')), ('comment', models.TextField(blank=True, default='', 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='ishtar_common.GeoProviderType', verbose_name='Parent')), ], options={ 'verbose_name': 'Geographic - Provider type', 'verbose_name_plural': 'Geographic - Provider types', 'ordering': ('order', 'label'), }, bases=(ishtar_common.models_common.Cached, models.Model), ), migrations.AlterModelOptions( name='area', options={'ordering': ('label',), 'verbose_name': 'Town - Area', 'verbose_name_plural': 'Town - Areas'}, ), migrations.AlterModelOptions( name='person', options={'ordering': ['name', 'surname'], 'permissions': (('view_own_person', 'Can view own Person'), ('change_own_person', 'Can change own Person'), ('delete_own_person', 'Can delete own Person')), 'verbose_name': 'Person', 'verbose_name_plural': 'Persons'}, ), migrations.AlterModelOptions( name='spatialreferencesystem', options={'ordering': ('order', 'label'), 'verbose_name': 'Spatial reference system', 'verbose_name_plural': 'Spatial reference systems'}, ), migrations.AddField( model_name='importertype', name='is_main_geometry', field=models.BooleanField(default=True, help_text='Only relevant for GIS files', verbose_name='Set to main geometry'), ), migrations.AddField( model_name='importertype', name='layer_name', field=models.CharField(blank=True, help_text='For GIS file with multiple layers', max_length=200, null=True, verbose_name='Layer name'), ), migrations.AddField( model_name='importertype', name='type', field=models.CharField(choices=[('tab', 'Table'), ('gis', 'GIS')], default='tab', max_length=3, verbose_name='Type'), ), migrations.AlterField( model_name='area', name='reference', field=models.TextField(blank=True, default='', verbose_name='Reference'), ), migrations.AlterField( model_name='author', name='author_type', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='ishtar_common.AuthorType', verbose_name='Author type'), ), migrations.AlterField( model_name='document', name='data', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='document', name='history_m2m', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='document', name='language', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Language', verbose_name='Language'), ), migrations.AlterField( model_name='document', name='last_modified', field=models.DateTimeField(), ), migrations.AlterField( model_name='document', name='publisher', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='publish', to='ishtar_common.Organization', verbose_name='Publisher'), ), migrations.AlterField( model_name='document', name='source', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='children', to='ishtar_common.Document', verbose_name='Source'), ), migrations.AlterField( model_name='historicalorganization', name='data', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='historicalorganization', name='history_m2m', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='historicalorganization', name='last_modified', field=models.DateTimeField(), ), migrations.AlterField( model_name='historicalorganization', name='mobile_phone', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Mobile phone'), ), migrations.AlterField( model_name='historicalorganization', name='phone', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone'), ), migrations.AlterField( model_name='historicalorganization', name='phone2', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone description 2'), ), migrations.AlterField( model_name='historicalorganization', name='phone3', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone 3'), ), migrations.AlterField( model_name='historicalperson', name='data', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='historicalperson', name='history_m2m', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='historicalperson', name='last_modified', field=models.DateTimeField(), ), migrations.AlterField( model_name='historicalperson', name='mobile_phone', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Mobile phone'), ), migrations.AlterField( model_name='historicalperson', name='phone', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone'), ), migrations.AlterField( model_name='historicalperson', name='phone2', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone description 2'), ), migrations.AlterField( model_name='historicalperson', name='phone3', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone 3'), ), migrations.AlterField( model_name='ishtarsiteprofile', name='default_language', field=models.ForeignKey(blank=True, help_text='If set, by default the selected language will be set for localized documents.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Language', verbose_name='Default language for documentation'), ), migrations.AlterField( model_name='ishtarsiteprofile', name='display_srs', field=models.ForeignKey(blank=True, help_text='Spatial Reference System used for display when no SRS is defined', null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.SpatialReferenceSystem', verbose_name='Spatial Reference System for display'), ), migrations.AlterField( model_name='itemkey', name='group', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.TargetKeyGroup'), ), migrations.AlterField( model_name='itemkey', name='importer', field=models.ForeignKey(blank=True, help_text='Specific key to an import', null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Import'), ), migrations.AlterField( model_name='itemkey', name='user', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.IshtarUser'), ), migrations.AlterField( model_name='jsondatafield', name='value_type', field=models.CharField(choices=[('T', 'Text'), ('LT', 'Long text'), ('I', 'Integer'), ('B', 'Boolean'), ('F', 'Float'), ('D', 'Date'), ('C', 'Choices'), ('MC', 'Multi-choices')], default='T', max_length=10, verbose_name='Type'), ), migrations.AlterField( model_name='organization', name='data', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='organization', name='history_m2m', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='organization', name='last_modified', field=models.DateTimeField(), ), migrations.AlterField( model_name='organization', name='mobile_phone', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Mobile phone'), ), migrations.AlterField( model_name='organization', name='organization_type', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='ishtar_common.OrganizationType', verbose_name='Type'), ), migrations.AlterField( model_name='organization', name='phone', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone'), ), migrations.AlterField( model_name='organization', name='phone2', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone description 2'), ), migrations.AlterField( model_name='organization', name='phone3', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone 3'), ), migrations.AlterField( model_name='organization', name='precise_town', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Town', verbose_name='Town (precise)'), ), migrations.AlterField( model_name='person', name='data', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='person', name='history_m2m', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='person', name='last_modified', field=models.DateTimeField(), ), migrations.AlterField( model_name='person', name='mobile_phone', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Mobile phone'), ), migrations.AlterField( model_name='person', name='phone', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone'), ), migrations.AlterField( model_name='person', name='phone2', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone description 2'), ), migrations.AlterField( model_name='person', name='phone3', field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Phone 3'), ), migrations.AlterField( model_name='person', name='precise_town', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Town', verbose_name='Town (precise)'), ), migrations.AlterField( model_name='statscache', name='values', field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict), ), migrations.AlterField( model_name='targetkey', name='associated_group', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.TargetKeyGroup'), ), migrations.AlterField( model_name='targetkey', name='associated_import', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Import'), ), migrations.AlterField( model_name='targetkey', name='associated_user', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.IshtarUser'), ), migrations.AlterField( model_name='userprofile', name='profile_type', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='ishtar_common.ProfileType', verbose_name='Profile type'), ), migrations.CreateModel( name='GeoVectorData', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.TextField(default='Default', verbose_name='Name')), ('source_id', models.PositiveIntegerField()), ('comment', models.TextField(blank=True, default='', verbose_name='Comment')), ('x', models.FloatField(blank=True, help_text='User input', null=True, verbose_name='X')), ('y', models.FloatField(blank=True, help_text='User input', null=True, verbose_name='Y')), ('z', models.FloatField(blank=True, help_text='User input', null=True, verbose_name='Z')), ('cached_x', models.FloatField(blank=True, null=True, verbose_name='X (cached)')), ('cached_y', models.FloatField(blank=True, null=True, verbose_name='Y (cached)')), ('cached_z', models.FloatField(blank=True, null=True, verbose_name='Z (cached)')), ('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_2d', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=4326, verbose_name='Point (2D)')), ('point_3d', django.contrib.gis.db.models.fields.PointField(blank=True, dim=3, null=True, srid=4326, verbose_name='Point (3D)')), ('multi_points', django.contrib.gis.db.models.fields.MultiPointField(blank=True, null=True, srid=4326, verbose_name='Multi points')), ('multi_line', django.contrib.gis.db.models.fields.MultiLineStringField(blank=True, null=True, srid=4326, verbose_name='Multi line')), ('multi_polygon', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326, verbose_name='Multi polygon')), ('need_update', models.BooleanField(default=False, verbose_name='Need update')), ('data_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ishtar_common.GeoDataType', verbose_name='Data type')), ('origin', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ishtar_common.GeoOriginType', verbose_name='Origin')), ('provider', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ishtar_common.GeoProviderType', verbose_name='Provider')), ('source_content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='content_type_geovectordata', to='contenttypes.ContentType')), ('spatial_reference_system', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='ishtar_common.SpatialReferenceSystem', verbose_name='Spatial Reference System')), ], options={ 'verbose_name': 'Geographic - Vector data', 'verbose_name_plural': 'Geographic - Vector data', }, ), migrations.CreateModel( name='ApiSheetFilter', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('key', models.CharField(max_length=200, verbose_name='Key')), ('api_search_model', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sheet_filters', to='ishtar_common.ApiSearchModel')), ], options={ 'verbose_name': 'API - Remote access - Sheet filter', 'verbose_name_plural': 'API - Remote access - Sheet filters', }, ), migrations.AddField( model_name='apisearchmodel', name='user', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ApiUser'), ), migrations.CreateModel( name='ApiKeyMatch', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('search_keys', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=200), blank=True, size=None, verbose_name='Search keys')), ('distant_slug', models.SlugField(allow_unicode=True, max_length=200, verbose_name='Distant key')), ('distant_label', models.TextField(blank=True, default='', verbose_name='Distant value')), ('local_slug', models.SlugField(allow_unicode=True, max_length=200, verbose_name='Local key')), ('local_label', models.TextField(blank=True, default='', verbose_name='Local value')), ('do_not_match', models.BooleanField(default=False, verbose_name='Disable match for this search')), ('associated_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='key_match_types', to='contenttypes.ContentType', verbose_name='Associated type')), ('search_model', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='key_match_search_models', to='contenttypes.ContentType', verbose_name='Search model')), ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ApiExternalSource')), ], options={ 'verbose_name': 'API - Search - Key match', 'verbose_name_plural': 'API - Search - Keys matches', }, ), migrations.AddField( model_name='town', name='geodata', field=models.ManyToManyField(blank=True, related_name='related_items_ishtar_common_town', to='ishtar_common.GeoVectorData'), ), migrations.AddField( model_name='town', name='main_geodata', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_related_items_ishtar_common_town', to='ishtar_common.GeoVectorData'), ), migrations.AddField( model_name='userprofile', name='external_sources', field=models.ManyToManyField(blank=True, related_name='profiles', to='ishtar_common.ApiExternalSource'), ), ]