summaryrefslogtreecommitdiff
path: root/ishtar_common/migrations/0201_squashed.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-01-27 18:21:55 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2020-07-01 18:01:59 +0200
commit5ba93360a8f444141dcc2f512eda84e813fca364 (patch)
treeac58e393f88bd034eb8108905a7a43cc6c5498f6 /ishtar_common/migrations/0201_squashed.py
parent3092612f54ecaba7ede5e5564f40ac36e873dd67 (diff)
downloadIshtar-5ba93360a8f444141dcc2f512eda84e813fca364.tar.bz2
Ishtar-5ba93360a8f444141dcc2f512eda84e813fca364.zip
Pseudo-squash of migrations - use Makefile script for migrations
Diffstat (limited to 'ishtar_common/migrations/0201_squashed.py')
-rw-r--r--ishtar_common/migrations/0201_squashed.py1428
1 files changed, 1428 insertions, 0 deletions
diff --git a/ishtar_common/migrations/0201_squashed.py b/ishtar_common/migrations/0201_squashed.py
new file mode 100644
index 000000000..e0b23b5ed
--- /dev/null
+++ b/ishtar_common/migrations/0201_squashed.py
@@ -0,0 +1,1428 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.27 on 2020-01-23 18:21
+from __future__ import unicode_literals
+
+import datetime
+from django.conf import settings
+import django.contrib.gis.db.models.fields
+import django.contrib.postgres.fields.jsonb
+import django.contrib.postgres.indexes
+import django.contrib.postgres.search
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+import ishtar_common.models
+import re
+import uuid
+
+
+class Migration(migrations.Migration):
+ initial = True
+ dependencies = [
+ ('contenttypes', '0002_remove_content_type_name'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('auth', '0008_alter_user_username_max_length'),
+ ('ishtar_common', '0117_auto_20191216_1027'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='AdministrationScript',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('path', models.CharField(max_length=30, verbose_name='Filename')),
+ ('name', models.TextField(blank=True, null=True, verbose_name='Name')),
+ ],
+ options={
+ 'verbose_name': 'Administration script',
+ 'verbose_name_plural': 'Administration scripts',
+ 'ordering': ['name'],
+ },
+ ),
+ migrations.CreateModel(
+ name='AdministrationTask',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('state', models.CharField(choices=[('S', 'Scheduled'), ('P', 'In progress'), ('FE', 'Finished with errors'), ('F', 'Finished')], default='S', max_length=2, verbose_name='State')),
+ ('creation_date', models.DateTimeField(default=datetime.datetime.now)),
+ ('launch_date', models.DateTimeField(blank=True, null=True)),
+ ('finished_date', models.DateTimeField(blank=True, null=True)),
+ ('result', models.TextField(blank=True, null=True, verbose_name='Result')),
+ ('script', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.AdministrationScript')),
+ ],
+ options={
+ 'verbose_name': 'Administration task',
+ 'verbose_name_plural': 'Administration tasks',
+ 'ordering': ['script'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Area',
+ 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')),
+ ('reference', models.CharField(blank=True, max_length=200, null=True, verbose_name='Reference')),
+ ('parent', models.ForeignKey(blank=True, help_text='Only four level of parent are managed.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='children', to='ishtar_common.Area', verbose_name='Parent')),
+ ],
+ options={
+ 'verbose_name': 'Area',
+ 'verbose_name_plural': 'Areas',
+ 'ordering': ('label',),
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='Arrondissement',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=30, verbose_name='Nom')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='Author',
+ 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)),
+ ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')),
+ ],
+ options={
+ 'verbose_name': 'Author',
+ 'verbose_name_plural': 'Authors',
+ 'ordering': ('author_type__order', 'person__name'),
+ 'permissions': (('view_author', 'Can view all Authors'), ('view_own_author', 'Can view own Author'), ('add_own_author', 'Can add own Author'), ('change_own_author', 'Can change own Author'), ('delete_own_author', 'Can delete own Author')),
+ },
+ ),
+ migrations.CreateModel(
+ name='AuthorType',
+ 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')),
+ ],
+ options={
+ 'verbose_name': 'Author type',
+ 'verbose_name_plural': 'Author types',
+ 'ordering': ['order', 'label'],
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='Canton',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=30, verbose_name='Nom')),
+ ('arrondissement', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Arrondissement', verbose_name='Arrondissement')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='CustomForm',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=250, verbose_name='Name')),
+ ('form', models.CharField(max_length=250, verbose_name='Form')),
+ ('available', models.BooleanField(default=True, verbose_name='Available')),
+ ('enabled', models.BooleanField(default=True, help_text='Disable with caution: disabling a form with mandatory fields may lead to database errors.', verbose_name='Enable this form')),
+ ('apply_to_all', models.BooleanField(default=False, help_text='Apply this form to all users. If set to True, selecting user and user type is useless.', verbose_name='Apply to all')),
+ ],
+ options={
+ 'verbose_name': 'Custom form',
+ 'verbose_name_plural': 'Custom forms',
+ 'ordering': ['name', 'form'],
+ },
+ ),
+ migrations.CreateModel(
+ name='CustomFormJsonField',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('label', models.CharField(blank=True, default='', max_length=200, verbose_name='Label')),
+ ('order', models.IntegerField(default=1, verbose_name='Order')),
+ ('help_text', models.TextField(blank=True, null=True, verbose_name='Help')),
+ ('custom_form', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='json_fields', to='ishtar_common.CustomForm')),
+ ],
+ options={
+ 'verbose_name': 'Custom form - Json data field',
+ 'verbose_name_plural': 'Custom form - Json data fields',
+ },
+ ),
+ migrations.CreateModel(
+ name='Department',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('label', models.CharField(max_length=30, verbose_name='Label')),
+ ('number', models.CharField(max_length=3, unique=True, verbose_name='Number')),
+ ],
+ options={
+ 'verbose_name': 'Department',
+ 'verbose_name_plural': 'Departments',
+ 'ordering': ['number'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Document',
+ 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')),
+ ('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')),
+ ('title', models.TextField(blank=True, default='', verbose_name='Title')),
+ ('associated_file', models.FileField(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)),
+ ('index', models.IntegerField(blank=True, null=True, verbose_name='Index')),
+ ('external_id', models.TextField(blank=True, null=True, verbose_name='External ID')),
+ ('reference', models.TextField(blank=True, null=True, verbose_name='Ref.')),
+ ('internal_reference', models.TextField(blank=True, null=True, verbose_name='Internal ref.')),
+ ('scale', models.CharField(blank=True, max_length=30, null=True, verbose_name='Scale')),
+ ('authors_raw', models.CharField(blank=True, max_length=250, null=True, verbose_name='Authors (raw)')),
+ ('associated_url', models.URLField(blank=True, max_length=1000, null=True, verbose_name='Numerical ressource (web address)')),
+ ('receipt_date', models.DateField(blank=True, null=True, verbose_name='Receipt date')),
+ ('creation_date', models.DateField(blank=True, null=True, verbose_name='Creation date')),
+ ('receipt_date_in_documentation', models.DateField(blank=True, null=True, verbose_name='Receipt date in documentation')),
+ ('item_number', models.IntegerField(default=1, verbose_name='Number of items')),
+ ('description', models.TextField(blank=True, null=True, verbose_name='Description')),
+ ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')),
+ ('additional_information', models.TextField(blank=True, null=True, verbose_name='Additional information')),
+ ('duplicate', models.NullBooleanField(verbose_name='Has a duplicate')),
+ ('associated_links', models.TextField(blank=True, null=True, verbose_name='Symbolic links')),
+ ('cache_related_label', models.TextField(blank=True, db_index=True, help_text='Cached value - do not edit', null=True, verbose_name='Related')),
+ ('authors', models.ManyToManyField(related_name='documents', to='ishtar_common.Author', verbose_name='Authors')),
+ ],
+ options={
+ 'verbose_name': 'Document',
+ 'verbose_name_plural': 'Documents',
+ 'ordering': ('title',),
+ 'permissions': (('view_document', 'Peut voir tous les Documents'), ('view_own_document', 'Peut voir ses propres Documents'), ('add_own_document', 'Peut ajouter son propre Document'), ('change_own_document', 'Peut modifier ses propres Documents'), ('delete_own_document', 'Peut supprimer ses propres Documents')),
+ },
+ bases=(ishtar_common.models.StatisticItem, ishtar_common.models.TemplateItem, ishtar_common.models.OwnPerms, models.Model, ishtar_common.models.CachedGen, ishtar_common.models.FixAssociated, ishtar_common.models.CascasdeUpdate, ishtar_common.models.ImageContainerModel, ishtar_common.models.ValueGetter, ishtar_common.models.MainItem),
+ ),
+ migrations.CreateModel(
+ name='DocumentTemplate',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=100, verbose_name='Name')),
+ ('slug', models.SlugField(max_length=100, unique=True, verbose_name='Slug')),
+ ('template', models.FileField(help_text='La taille maximale supportée pour le fichier est de 100 Mo.', upload_to='templates/%Y/', verbose_name='Template')),
+ ('available', models.BooleanField(default=True, verbose_name='Available')),
+ ('for_labels', models.BooleanField(default=False, verbose_name='Used for labels')),
+ ('label_per_page', models.IntegerField(blank=True, help_text='Only relevant for label template', null=True, verbose_name='Number of label per page')),
+ ],
+ options={
+ 'verbose_name': 'Document template',
+ 'verbose_name_plural': 'Document templates',
+ 'ordering': ['associated_model', 'name'],
+ },
+ ),
+ migrations.CreateModel(
+ name='ExcludedField',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('field', models.CharField(max_length=250, verbose_name='Field')),
+ ('custom_form', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='excluded_fields', to='ishtar_common.CustomForm')),
+ ],
+ options={
+ 'verbose_name': 'Excluded field',
+ 'verbose_name_plural': 'Excluded fields',
+ },
+ ),
+ migrations.CreateModel(
+ name='ExportTask',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('filter_type', models.CharField(blank=True, choices=[('O', 'Operation'), ('S', 'Archaeological site'), ('CR', 'Context record'), ('F', 'Find'), ('W', 'Warehouse')], max_length=2, null=True, verbose_name='Filter on')),
+ ('filter_text', models.TextField(blank=True, help_text='Textual query on this item (try it on the main interface)', null=True, verbose_name='Filter query')),
+ ('geo', models.BooleanField(default=True, help_text='Geographic data can represent large volume of information. Geographic data can be excluded from the export', verbose_name='Export geographic data')),
+ ('state', models.CharField(choices=[('C', 'Created'), ('S', 'Scheduled'), ('P', 'In progress'), ('FE', 'Finished with errors'), ('F', 'Finished')], default='C', max_length=2, verbose_name='State')),
+ ('put_locks', models.BooleanField(default=False, verbose_name='Put locks on associated items')),
+ ('export_types', models.BooleanField(default=True, verbose_name='Export types')),
+ ('export_conf', models.BooleanField(default=True, verbose_name='Export configuration')),
+ ('export_importers', models.BooleanField(default=True, verbose_name='Export importers')),
+ ('export_geo', models.BooleanField(default=True, verbose_name='Export towns, areas...')),
+ ('export_dir', models.BooleanField(default=True, verbose_name='Export directory')),
+ ('export_docs', models.BooleanField(default=True, verbose_name='Export documents')),
+ ('export_items', models.BooleanField(default=True, verbose_name='Export main items')),
+ ('creation_date', models.DateTimeField(default=datetime.datetime.now)),
+ ('launch_date', models.DateTimeField(blank=True, null=True)),
+ ('finished_date', models.DateTimeField(blank=True, null=True)),
+ ('result', models.FileField(blank=True, null=True, upload_to='exports/%Y/%m/', verbose_name='Result')),
+ ('result_info', models.TextField(blank=True, null=True, verbose_name='Result information')),
+ ],
+ options={
+ 'verbose_name': 'Archive - Export',
+ 'verbose_name_plural': 'Archive - Exports',
+ 'ordering': ['creation_date'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Format',
+ 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': 'Format type',
+ 'verbose_name_plural': 'Format types',
+ 'ordering': ['label'],
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='FormaterType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('formater_type', models.CharField(choices=[('IntegerFormater', 'Integer'), ('FloatFormater', 'Float'), ('UnicodeFormater', 'String'), ('DateFormater', 'Date'), ('TypeFormater', 'Type'), ('YearFormater', 'Year'), ('InseeFormater', 'INSEE code'), ('StrToBoolean', 'String to boolean'), ('FileFormater', 'File'), ('UnknowType', 'Unknow type')], max_length=20, verbose_name='Formater type')),
+ ('options', models.CharField(blank=True, max_length=500, null=True, verbose_name='Options')),
+ ('many_split', models.CharField(blank=True, max_length=10, null=True, verbose_name='Split character(s)')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Formater type',
+ 'verbose_name_plural': 'Importer - Formater types',
+ 'ordering': ('formater_type', 'options'),
+ },
+ ),
+ migrations.CreateModel(
+ name='GlobalVar',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('slug', models.SlugField(unique=True, verbose_name='Variable name')),
+ ('description', models.TextField(blank=True, null=True, verbose_name='Description of the variable')),
+ ('value', models.TextField(blank=True, null=True, verbose_name='Value')),
+ ],
+ options={
+ 'verbose_name': 'Global variable',
+ 'verbose_name_plural': 'Global variables',
+ 'ordering': ['slug'],
+ },
+ bases=(models.Model, ishtar_common.models.Cached),
+ ),
+ migrations.CreateModel(
+ name='HistoricalOrganization',
+ 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')),
+ ('address', models.TextField(blank=True, null=True, verbose_name='Address')),
+ ('address_complement', models.TextField(blank=True, null=True, verbose_name='Address complement')),
+ ('postal_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Postal code')),
+ ('town', models.CharField(blank=True, max_length=150, null=True, verbose_name='Town (freeform)')),
+ ('country', models.CharField(blank=True, max_length=30, null=True, verbose_name='Country')),
+ ('alt_address', models.TextField(blank=True, null=True, verbose_name='Other address: address')),
+ ('alt_address_complement', models.TextField(blank=True, null=True, verbose_name='Other address: address complement')),
+ ('alt_postal_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Other address: postal code')),
+ ('alt_town', models.CharField(blank=True, max_length=70, null=True, verbose_name='Other address: town')),
+ ('alt_country', models.CharField(blank=True, max_length=30, null=True, verbose_name='Other address: country')),
+ ('phone', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone')),
+ ('phone_desc', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description')),
+ ('phone2', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone description 2')),
+ ('phone_desc2', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description 2')),
+ ('phone3', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone 3')),
+ ('phone_desc3', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description 3')),
+ ('raw_phone', models.TextField(blank=True, null=True, verbose_name='Raw phone')),
+ ('mobile_phone', models.CharField(blank=True, max_length=18, null=True, verbose_name='Mobile phone')),
+ ('email', models.EmailField(blank=True, max_length=300, null=True, verbose_name='Email')),
+ ('alt_address_is_prefered', models.BooleanField(default=False, verbose_name='Alternative address is prefered')),
+ ('merge_key', models.TextField(blank=True, null=True, verbose_name='Merge key')),
+ ('archived', models.NullBooleanField(default=False)),
+ ('uuid', models.UUIDField(default=uuid.uuid4)),
+ ('name', models.CharField(max_length=500, verbose_name='Name')),
+ ('url', models.URLField(blank=True, null=True, verbose_name='Web address')),
+ ('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 Organization',
+ 'ordering': ('-history_date', '-history_id'),
+ 'get_latest_by': 'history_date',
+ },
+ ),
+ migrations.CreateModel(
+ name='HistoricalPerson',
+ 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')),
+ ('address', models.TextField(blank=True, null=True, verbose_name='Address')),
+ ('address_complement', models.TextField(blank=True, null=True, verbose_name='Address complement')),
+ ('postal_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Postal code')),
+ ('town', models.CharField(blank=True, max_length=150, null=True, verbose_name='Town (freeform)')),
+ ('country', models.CharField(blank=True, max_length=30, null=True, verbose_name='Country')),
+ ('alt_address', models.TextField(blank=True, null=True, verbose_name='Other address: address')),
+ ('alt_address_complement', models.TextField(blank=True, null=True, verbose_name='Other address: address complement')),
+ ('alt_postal_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Other address: postal code')),
+ ('alt_town', models.CharField(blank=True, max_length=70, null=True, verbose_name='Other address: town')),
+ ('alt_country', models.CharField(blank=True, max_length=30, null=True, verbose_name='Other address: country')),
+ ('phone', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone')),
+ ('phone_desc', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description')),
+ ('phone2', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone description 2')),
+ ('phone_desc2', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description 2')),
+ ('phone3', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone 3')),
+ ('phone_desc3', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description 3')),
+ ('raw_phone', models.TextField(blank=True, null=True, verbose_name='Raw phone')),
+ ('mobile_phone', models.CharField(blank=True, max_length=18, null=True, verbose_name='Mobile phone')),
+ ('email', models.EmailField(blank=True, max_length=300, null=True, verbose_name='Email')),
+ ('alt_address_is_prefered', models.BooleanField(default=False, verbose_name='Alternative address is prefered')),
+ ('merge_key', models.TextField(blank=True, null=True, verbose_name='Merge key')),
+ ('archived', models.NullBooleanField(default=False)),
+ ('uuid', models.UUIDField(default=uuid.uuid4)),
+ ('old_title', models.CharField(blank=True, choices=[('Mr', 'Mr'), ('Ms', 'Miss'), ('Mr and Miss', 'Mr and Mrs'), ('Md', 'Mrs'), ('Dr', 'Doctor')], max_length=100, null=True, verbose_name='Title')),
+ ('salutation', models.CharField(blank=True, max_length=200, null=True, verbose_name='Salutation')),
+ ('surname', models.CharField(blank=True, max_length=50, null=True, verbose_name='Surname')),
+ ('name', models.CharField(blank=True, max_length=200, null=True, verbose_name='Name')),
+ ('raw_name', models.CharField(blank=True, max_length=300, null=True, verbose_name='Raw name')),
+ ('contact_type', models.CharField(blank=True, max_length=300, null=True, verbose_name='Contact type')),
+ ('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 Person',
+ 'ordering': ('-history_date', '-history_id'),
+ 'get_latest_by': 'history_date',
+ },
+ ),
+ migrations.CreateModel(
+ name='Import',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=500, null=True, verbose_name='Name')),
+ ('imported_file', models.FileField(help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=220, upload_to='upload/imports/%Y/%m/', verbose_name='Imported file')),
+ ('imported_images', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=220, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Associated images (zip file)')),
+ ('encoding', models.CharField(choices=[('windows-1252', 'windows-1252'), ('ISO-8859-15', 'ISO-8859-15'), ('utf-8', 'utf-8')], default='utf-8', max_length=15, verbose_name='Encoding')),
+ ('csv_sep', models.CharField(choices=[(',', ','), (';', ';')], default=',', help_text='Separator for CSV file. Standard is comma but Microsoft Excel do not follow this standard and use semi-colon.', max_length=1, verbose_name='CSV separator')),
+ ('skip_lines', models.IntegerField(default=1, help_text='Number of header lines in your file (can be 0).', verbose_name='Skip lines')),
+ ('error_file', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=255, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Error file')),
+ ('result_file', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=255, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Result file')),
+ ('match_file', models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=255, null=True, upload_to='upload/imports/%Y/%m/', verbose_name='Match file')),
+ ('state', models.CharField(choices=[('C', 'Created'), ('AP', 'Analyse in progress'), ('A', 'Analysed'), ('HQ', 'Check modified in queue'), ('IQ', 'Import in queue'), ('HP', 'Check modified in progress'), ('IP', 'Import in progress'), ('PI', 'Partially imported'), ('FE', 'Finished with errors'), ('F', 'Finished'), ('AC', 'Archived')], default='C', max_length=2, verbose_name='State')),
+ ('conservative_import', models.BooleanField(default=False, help_text='If set to true, do not overload existing values.', verbose_name='Conservative import')),
+ ('creation_date', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Creation date')),
+ ('end_date', models.DateTimeField(auto_now_add=True, null=True, verbose_name='End date')),
+ ('seconds_remaining', models.IntegerField(blank=True, editable=False, null=True, verbose_name='Remaining seconds')),
+ ('current_line', models.IntegerField(blank=True, null=True, verbose_name='Current line')),
+ ('number_of_line', models.IntegerField(blank=True, null=True, verbose_name='Number of line')),
+ ('imported_line_numbers', models.TextField(blank=True, null=True, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:,\\d+)*\\Z', 32), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Imported line numbers')),
+ ('changed_checked', models.BooleanField(default=False, verbose_name='Changed have been checked')),
+ ('changed_line_numbers', models.TextField(blank=True, null=True, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:,\\d+)*\\Z', 32), code='invalid', message='Enter only digits separated by commas.')], verbose_name='Changed line numbers')),
+ ],
+ options={
+ 'verbose_name': 'Import',
+ 'verbose_name_plural': 'Imports',
+ },
+ ),
+ migrations.CreateModel(
+ name='ImporterColumn',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('label', models.CharField(blank=True, max_length=200, null=True, verbose_name='Label')),
+ ('col_number', models.IntegerField(default=1, verbose_name='Column number')),
+ ('description', models.TextField(blank=True, null=True, verbose_name='Description')),
+ ('required', models.BooleanField(default=False, verbose_name='Required')),
+ ('export_field_name', models.CharField(blank=True, help_text='Fill this field if the field name is ambiguous for export. For instance: concatenated fields.', max_length=200, null=True, verbose_name='Export field name')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Column',
+ 'verbose_name_plural': 'Importer - Columns',
+ 'ordering': ('importer_type', 'col_number'),
+ },
+ ),
+ migrations.CreateModel(
+ name='ImporterDefault',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('target', models.CharField(max_length=500, verbose_name='Target')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Default',
+ 'verbose_name_plural': 'Importer - Defaults',
+ },
+ ),
+ migrations.CreateModel(
+ name='ImporterDefaultValues',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('target', models.CharField(max_length=500, verbose_name='Target')),
+ ('value', models.CharField(max_length=500, verbose_name='Value')),
+ ('default_target', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='default_values', to='ishtar_common.ImporterDefault')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Default value',
+ 'verbose_name_plural': 'Importer - Default values',
+ },
+ ),
+ migrations.CreateModel(
+ name='ImporterDuplicateField',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('field_name', models.CharField(blank=True, max_length=200, null=True, verbose_name='Field name')),
+ ('force_new', models.BooleanField(default=False, verbose_name='Force creation of new items')),
+ ('concat', models.BooleanField(default=False, verbose_name='Concatenate with existing')),
+ ('concat_str', models.CharField(blank=True, max_length=5, null=True, verbose_name='Concatenate character')),
+ ('column', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='duplicate_fields', to='ishtar_common.ImporterColumn')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Duplicate field',
+ 'verbose_name_plural': 'Importer - Duplicate fields',
+ 'ordering': ('column', 'field_name'),
+ },
+ ),
+ migrations.CreateModel(
+ name='ImporterModel',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=200, verbose_name='Name')),
+ ('klass', models.CharField(max_length=200, unique=True, verbose_name='Class name')),
+ ],
+ options={
+ 'verbose_name': 'Model',
+ 'verbose_name_plural': 'Models',
+ 'ordering': ('name',),
+ },
+ ),
+ migrations.CreateModel(
+ name='ImporterType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=200, verbose_name='Name')),
+ ('slug', models.SlugField(max_length=100, unique=True, verbose_name='Slug')),
+ ('description', models.CharField(blank=True, max_length=500, null=True, verbose_name='Description')),
+ ('is_template', models.BooleanField(default=False, verbose_name='Can be exported')),
+ ('unicity_keys', models.CharField(blank=True, max_length=500, null=True, verbose_name='Unicity keys (separator ";")')),
+ ('available', models.BooleanField(default=True, verbose_name='Available')),
+ ('associated_models', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='ishtar_common.ImporterModel', verbose_name='Associated model')),
+ ('created_models', models.ManyToManyField(blank=True, help_text='Leave blank for no restrictions', related_name='_importertype_created_models_+', to='ishtar_common.ImporterModel', verbose_name='Models that can accept new items')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Type',
+ 'verbose_name_plural': 'Importer - Types',
+ 'ordering': ('name',),
+ },
+ ),
+ migrations.CreateModel(
+ name='ImportTarget',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('target', models.CharField(max_length=500, verbose_name='Target')),
+ ('force_new', models.BooleanField(default=False, verbose_name='Force creation of new items')),
+ ('concat', models.BooleanField(default=False, verbose_name='Concatenate with existing')),
+ ('concat_str', models.CharField(blank=True, max_length=5, null=True, verbose_name='Concatenate character')),
+ ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')),
+ ('column', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='targets', to='ishtar_common.ImporterColumn')),
+ ('formater_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.FormaterType')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Target',
+ 'verbose_name_plural': 'Importer - Targets',
+ },
+ ),
+ migrations.CreateModel(
+ name='ImportTask',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('creation_date', models.DateTimeField(default=datetime.datetime.now)),
+ ('launch_date', models.DateTimeField(blank=True, null=True)),
+ ('finished_date', models.DateTimeField(blank=True, null=True)),
+ ('state', models.CharField(choices=[('C', 'Created'), ('S', 'Scheduled'), ('P', 'In progress'), ('FE', 'Finished with errors'), ('F', 'Finished')], default='C', max_length=2, verbose_name='State')),
+ ('delete_before', models.BooleanField(default=False, help_text='Delete existing items before adding', verbose_name='Delete before adding')),
+ ('releasing_locks', models.BooleanField(default=False, verbose_name='Releasing locks on associated items')),
+ ('source', models.FileField(upload_to='imports/%Y/%m/', verbose_name='Source')),
+ ],
+ options={
+ 'verbose_name': 'Archive - Import',
+ 'verbose_name_plural': 'Archive - Imports',
+ 'ordering': ['creation_date'],
+ },
+ ),
+ migrations.CreateModel(
+ name='IshtarSiteProfile',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('label', models.TextField(verbose_name='Name')),
+ ('slug', models.SlugField(unique=True, verbose_name='Slug')),
+ ('active', models.BooleanField(default=False, verbose_name='Current active')),
+ ('experimental_feature', models.BooleanField(default=False, verbose_name='Activate experimental feature')),
+ ('description', models.TextField(blank=True, null=True, verbose_name='Description')),
+ ('warning_name', models.TextField(blank=True, verbose_name='Warning name')),
+ ('warning_message', models.TextField(blank=True, verbose_name='Warning message')),
+ ('config', models.CharField(blank=True, choices=[('DRASSM', 'DRASSM')], help_text='Choose an alternate configuration for label, index management', max_length=200, null=True, verbose_name='Alternate configuration')),
+ ('files', models.BooleanField(default=False, verbose_name='Files module')),
+ ('archaeological_site', models.BooleanField(default=False, verbose_name='Archaeological site module')),
+ ('archaeological_site_label', models.CharField(choices=[('site', 'Site'), ('entity', 'Archaeological entity')], default='site', max_length=200, verbose_name='Archaeological site type')),
+ ('context_record', models.BooleanField(default=False, verbose_name='Context records module')),
+ ('find', models.BooleanField(default=False, help_text='Need context records module', verbose_name='Finds module')),
+ ('find_index', models.CharField(choices=[('O', 'Operations'), ('CR', 'Context records')], default='O', help_text='To prevent irrelevant indexes, change this parameter only if there is no find in the database', max_length=2, verbose_name='Find index is based on')),
+ ('warehouse', models.BooleanField(default=False, help_text='Need finds module', verbose_name='Warehouses module')),
+ ('preservation', models.BooleanField(default=False, verbose_name='Preservation module')),
+ ('mapping', models.BooleanField(default=False, verbose_name='Mapping module')),
+ ('point_precision', models.IntegerField(blank=True, help_text='Number of digit to round from the decimal point for coordinates in WGS84 (latitude, longitude). Empty value means no round.', null=True, verbose_name='Point precision (search and sheets)')),
+ ('locate_warehouses', models.BooleanField(default=False, help_text='Mapping module must be activated. With many containers and background task not activated, activating this option may consume many resources.', verbose_name='Locate warehouse and containers')),
+ ('use_town_for_geo', models.BooleanField(default=True, verbose_name='Use town to locate when coordinates are missing')),
+ ('relation_graph', models.BooleanField(default=False, verbose_name='Generate relation graph')),
+ ('underwater', models.BooleanField(default=False, verbose_name='Underwater module')),
+ ('parcel_mandatory', models.BooleanField(default=True, verbose_name='Parcel are mandatory for context records')),
+ ('homepage', models.TextField(blank=True, help_text='Homepage of Ishtar - if not defined a default homepage will appear. Use the markdown syntax. {random_image} can be used to display a random image.', null=True, verbose_name='Home page')),
+ ('operation_prefix', models.CharField(blank=True, default='OA', max_length=20, null=True, verbose_name='Main operation code prefix')),
+ ('default_operation_prefix', models.CharField(blank=True, default='OP', max_length=20, null=True, verbose_name='Default operation code prefix')),
+ ('operation_region_code', models.CharField(blank=True, max_length=5, null=True, verbose_name='Operation region code')),
+ ('file_external_id', models.TextField(default='{year}-{numeric_reference}', help_text='Formula to manage file external ID. Change this with care. With incorrect formula, the application might be unusable and import of external data can be destructive.', verbose_name='File external id')),
+ ('parcel_external_id', models.TextField(default='{associated_file__external_id}{operation__code_patriarche}-{town__numero_insee}-{section}{parcel_number}', help_text='Formula to manage parcel external ID. Change this with care. With incorrect formula, the application might be unusable and import of external data can be destructive.', verbose_name='Parcel external id')),
+ ('context_record_external_id', models.TextField(default='{parcel__external_id}-{label}', help_text='Formula to manage context record external ID. Change this with care. With incorrect formula, the application might be unusable and import of external data can be destructive.', verbose_name='Context record external id')),
+ ('base_find_external_id', models.TextField(default='{context_record__external_id}-{label}', help_text='Formula to manage base find external ID. Change this with care. With incorrect formula, the application might be unusable and import of external data can be destructive.', verbose_name='Base find external id')),
+ ('find_external_id', models.TextField(default='{get_first_base_find__context_record__external_id}-{label}', help_text='Formula to manage find external ID. Change this with care. With incorrect formula, the application might be unusable and import of external data can be destructive.', verbose_name='Find external id')),
+ ('container_external_id', models.TextField(default='{responsible__external_id}-{index}', help_text='Formula to manage container external ID. Change this with care. With incorrect formula, the application might be unusable and import of external data can be destructive.', verbose_name='Container external id')),
+ ('warehouse_external_id', models.TextField(default='{name|slug}', help_text='Formula to manage warehouse external ID. Change this with care. With incorrect formula, the application might be unusable and import of external data can be destructive.', verbose_name='Warehouse external id')),
+ ('document_external_id', models.TextField(default='{index}', help_text='Formula to manage document external ID. Change this with care. With incorrect formula, the application might be unusable and import of external data can be destructive.', verbose_name='Document external id')),
+ ('person_raw_name', models.TextField(default='{name|upper} {surname}', help_text='Formula to manage person raw_name. Change this with care. With incorrect formula, the application might be unusable and import of external data can be destructive.', verbose_name='Raw name for person')),
+ ('find_use_index', models.BooleanField(default=True, verbose_name='Use auto index for finds')),
+ ('currency', models.CharField(choices=[('€', 'Euro'), ('$', 'US dollar')], default='€', max_length=5, verbose_name='Currency')),
+ ('account_naming_style', models.CharField(choices=[('NF', 'name.firstname'), ('FN', 'firstname.name')], default='NF', max_length=2, verbose_name='Naming style for accounts')),
+ ('default_center', django.contrib.gis.db.models.fields.PointField(default='SRID=4326;POINT(2.4397 46.5528)', srid=4326, verbose_name='Maps - default center')),
+ ('default_zoom', models.IntegerField(default=6, verbose_name='Maps - default zoom')),
+ ],
+ options={
+ 'verbose_name': 'Ishtar site profile',
+ 'verbose_name_plural': 'Ishtar site profiles',
+ 'ordering': ['label'],
+ },
+ bases=(models.Model, ishtar_common.models.Cached),
+ ),
+ migrations.CreateModel(
+ name='IshtarUser',
+ fields=[
+ ('search_vector', django.contrib.postgres.search.SearchVectorField(blank=True, help_text='Auto filled at save', null=True, verbose_name='Search vector')),
+ ('user_ptr', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='ishtaruser', serialize=False, to=settings.AUTH_USER_MODEL)),
+ ('advanced_shortcut_menu', models.BooleanField(default=False, verbose_name='Advanced shortcut menu')),
+ ],
+ options={
+ 'verbose_name': 'Ishtar user',
+ 'verbose_name_plural': 'Ishtar users',
+ },
+ ),
+ migrations.CreateModel(
+ name='ItemKey',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('key', models.TextField(verbose_name='Key')),
+ ('object_id', models.PositiveIntegerField()),
+ ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
+ ],
+ ),
+ migrations.CreateModel(
+ name='JsonDataField',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=200, verbose_name='Name')),
+ ('key', models.CharField(help_text='Value of the key in the JSON schema. For hierarchical key use "__" to explain it. For instance for the key \'my_subkey\' with data such as {\'my_key\': {\'my_subkey\': \'value\'}}, its value will be reached with my_key__my_subkey.', max_length=200, verbose_name='Key')),
+ ('display', models.BooleanField(default=True, verbose_name='Display')),
+ ('value_type', models.CharField(choices=[('T', 'Text'), ('LT', 'Long text'), ('I', 'Integer'), ('B', 'Boolean'), ('F', 'Float'), ('D', 'Date'), ('C', 'Choices')], default='T', max_length=10, verbose_name='Type')),
+ ('order', models.IntegerField(default=10, verbose_name='Order')),
+ ('search_index', models.BooleanField(default=False, verbose_name='Use in search indexes')),
+ ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
+ ('custom_forms', models.ManyToManyField(blank=True, through='ishtar_common.CustomFormJsonField', to='ishtar_common.CustomForm')),
+ ],
+ options={
+ 'verbose_name': 'Json data - Field',
+ 'verbose_name_plural': 'Json data - Fields',
+ 'ordering': ['order', 'name'],
+ },
+ ),
+ migrations.CreateModel(
+ name='JsonDataSection',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=200, verbose_name='Name')),
+ ('order', models.IntegerField(default=10, verbose_name='Order')),
+ ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
+ ],
+ options={
+ 'verbose_name': 'Json data - Menu',
+ 'verbose_name_plural': 'Json data - Menus',
+ 'ordering': ['order', 'name'],
+ },
+ ),
+ migrations.CreateModel(
+ name='LicenseType',
+ 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')),
+ ('url', models.URLField(blank=True, null=True, verbose_name='URL')),
+ ],
+ options={
+ 'verbose_name': 'License type',
+ 'verbose_name_plural': 'License types',
+ 'ordering': ('label',),
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='OperationType',
+ 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')),
+ ('judiciary', models.BooleanField(default=False, verbose_name='Is judiciary')),
+ ],
+ options={
+ 'verbose_name': 'Operation type',
+ 'verbose_name_plural': 'Operation types',
+ 'ordering': ['judiciary', '-preventive', 'order', 'label'],
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='Organization',
+ 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')),
+ ('address', models.TextField(blank=True, null=True, verbose_name='Address')),
+ ('address_complement', models.TextField(blank=True, null=True, verbose_name='Address complement')),
+ ('postal_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Postal code')),
+ ('town', models.CharField(blank=True, max_length=150, null=True, verbose_name='Town (freeform)')),
+ ('country', models.CharField(blank=True, max_length=30, null=True, verbose_name='Country')),
+ ('alt_address', models.TextField(blank=True, null=True, verbose_name='Other address: address')),
+ ('alt_address_complement', models.TextField(blank=True, null=True, verbose_name='Other address: address complement')),
+ ('alt_postal_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Other address: postal code')),
+ ('alt_town', models.CharField(blank=True, max_length=70, null=True, verbose_name='Other address: town')),
+ ('alt_country', models.CharField(blank=True, max_length=30, null=True, verbose_name='Other address: country')),
+ ('phone', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone')),
+ ('phone_desc', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description')),
+ ('phone2', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone description 2')),
+ ('phone_desc2', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description 2')),
+ ('phone3', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone 3')),
+ ('phone_desc3', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description 3')),
+ ('raw_phone', models.TextField(blank=True, null=True, verbose_name='Raw phone')),
+ ('mobile_phone', models.CharField(blank=True, max_length=18, null=True, verbose_name='Mobile phone')),
+ ('email', models.EmailField(blank=True, max_length=300, null=True, verbose_name='Email')),
+ ('alt_address_is_prefered', models.BooleanField(default=False, verbose_name='Alternative address is prefered')),
+ ('merge_key', models.TextField(blank=True, null=True, verbose_name='Merge key')),
+ ('archived', models.NullBooleanField(default=False)),
+ ('uuid', models.UUIDField(default=uuid.uuid4)),
+ ('name', models.CharField(max_length=500, verbose_name='Name')),
+ ('url', models.URLField(blank=True, null=True, verbose_name='Web address')),
+ ('cached_label', models.TextField(blank=True, db_index=True, null=True, verbose_name='Cached name')),
+ ('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_ishtar_common_organization', 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')),
+ ('merge_candidate', models.ManyToManyField(blank=True, related_name='_organization_merge_candidate_+', to='ishtar_common.Organization')),
+ ('merge_exclusion', models.ManyToManyField(blank=True, related_name='_organization_merge_exclusion_+', to='ishtar_common.Organization')),
+ ],
+ options={
+ 'verbose_name': 'Organization',
+ 'verbose_name_plural': 'Organizations',
+ 'permissions': (('view_organization', 'Can view all Organizations'), ('view_own_organization', 'Can view own Organization'), ('add_own_organization', 'Can add own Organization'), ('change_own_organization', 'Can change own Organization'), ('delete_own_organization', 'Can delete own Organization')),
+ },
+ bases=(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.MainItem),
+ ),
+ migrations.CreateModel(
+ name='OrganizationType',
+ 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': 'Organization type',
+ 'verbose_name_plural': 'Organization types',
+ 'ordering': ('label',),
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='Person',
+ 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')),
+ ('address', models.TextField(blank=True, null=True, verbose_name='Address')),
+ ('address_complement', models.TextField(blank=True, null=True, verbose_name='Address complement')),
+ ('postal_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Postal code')),
+ ('town', models.CharField(blank=True, max_length=150, null=True, verbose_name='Town (freeform)')),
+ ('country', models.CharField(blank=True, max_length=30, null=True, verbose_name='Country')),
+ ('alt_address', models.TextField(blank=True, null=True, verbose_name='Other address: address')),
+ ('alt_address_complement', models.TextField(blank=True, null=True, verbose_name='Other address: address complement')),
+ ('alt_postal_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='Other address: postal code')),
+ ('alt_town', models.CharField(blank=True, max_length=70, null=True, verbose_name='Other address: town')),
+ ('alt_country', models.CharField(blank=True, max_length=30, null=True, verbose_name='Other address: country')),
+ ('phone', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone')),
+ ('phone_desc', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description')),
+ ('phone2', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone description 2')),
+ ('phone_desc2', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description 2')),
+ ('phone3', models.CharField(blank=True, max_length=18, null=True, verbose_name='Phone 3')),
+ ('phone_desc3', models.CharField(blank=True, max_length=300, null=True, verbose_name='Phone description 3')),
+ ('raw_phone', models.TextField(blank=True, null=True, verbose_name='Raw phone')),
+ ('mobile_phone', models.CharField(blank=True, max_length=18, null=True, verbose_name='Mobile phone')),
+ ('email', models.EmailField(blank=True, max_length=300, null=True, verbose_name='Email')),
+ ('alt_address_is_prefered', models.BooleanField(default=False, verbose_name='Alternative address is prefered')),
+ ('merge_key', models.TextField(blank=True, null=True, verbose_name='Merge key')),
+ ('archived', models.NullBooleanField(default=False)),
+ ('uuid', models.UUIDField(default=uuid.uuid4)),
+ ('old_title', models.CharField(blank=True, choices=[('Mr', 'Mr'), ('Ms', 'Miss'), ('Mr and Miss', 'Mr and Mrs'), ('Md', 'Mrs'), ('Dr', 'Doctor')], max_length=100, null=True, verbose_name='Title')),
+ ('salutation', models.CharField(blank=True, max_length=200, null=True, verbose_name='Salutation')),
+ ('surname', models.CharField(blank=True, max_length=50, null=True, verbose_name='Surname')),
+ ('name', models.CharField(blank=True, max_length=200, null=True, verbose_name='Name')),
+ ('raw_name', models.CharField(blank=True, max_length=300, null=True, verbose_name='Raw name')),
+ ('contact_type', models.CharField(blank=True, max_length=300, null=True, verbose_name='Contact type')),
+ ('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')),
+ ('attached_to', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='members', to='ishtar_common.Organization', verbose_name='Is attached to')),
+ ('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_ishtar_common_person', 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')),
+ ('merge_candidate', models.ManyToManyField(blank=True, related_name='_person_merge_candidate_+', to='ishtar_common.Person')),
+ ('merge_exclusion', models.ManyToManyField(blank=True, related_name='_person_merge_exclusion_+', to='ishtar_common.Person')),
+ ],
+ options={
+ 'verbose_name': 'Person',
+ 'verbose_name_plural': 'Persons',
+ 'permissions': (('view_person', 'Can view all Persons'), ('view_own_person', 'Can view own Person'), ('add_own_person', 'Can add own Person'), ('change_own_person', 'Can change own Person'), ('delete_own_person', 'Can delete own Person')),
+ },
+ bases=(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.MainItem),
+ ),
+ migrations.CreateModel(
+ name='PersonType',
+ 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': 'Person type',
+ 'verbose_name_plural': 'Person types',
+ 'ordering': ('label',),
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='ProfileType',
+ 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')),
+ ('groups', models.ManyToManyField(blank=True, to='auth.Group', verbose_name='Groups')),
+ ],
+ options={
+ 'verbose_name': 'Profile type',
+ 'verbose_name_plural': 'Profile types',
+ 'ordering': ('label',),
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='Regexp',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=100, unique=True, verbose_name='Name')),
+ ('description', models.TextField(blank=True, null=True, verbose_name='Description')),
+ ('regexp', models.CharField(max_length=500, verbose_name='Regular expression')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Regular expression',
+ 'verbose_name_plural': 'Importer - Regular expressions',
+ },
+ ),
+ migrations.CreateModel(
+ name='SearchQuery',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('label', models.TextField(blank=True, verbose_name='Label')),
+ ('query', models.TextField(blank=True, verbose_name='Query')),
+ ('is_alert', models.BooleanField(default=False, verbose_name='Is an alert')),
+ ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType', verbose_name='Content type')),
+ ],
+ options={
+ 'verbose_name': 'Search query',
+ 'verbose_name_plural': 'Search queries',
+ 'ordering': ['label'],
+ },
+ ),
+ migrations.CreateModel(
+ name='SourceType',
+ 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')),
+ ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.SourceType', verbose_name='Parent')),
+ ],
+ options={
+ 'verbose_name': 'Source type',
+ 'verbose_name_plural': 'Source types',
+ 'ordering': ['label'],
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='SpatialReferenceSystem',
+ 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')),
+ ('auth_name', models.CharField(default='EPSG', max_length=256, verbose_name='Authority name')),
+ ('srid', models.IntegerField(verbose_name='Authority SRID')),
+ ],
+ options={
+ 'verbose_name': 'Spatial reference system',
+ 'verbose_name_plural': 'Spatial reference systems',
+ 'ordering': ('label',),
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='State',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('label', models.CharField(max_length=30, verbose_name='Label')),
+ ('number', models.CharField(max_length=3, unique=True, verbose_name='Number')),
+ ],
+ options={
+ 'verbose_name': 'State',
+ 'ordering': ['number'],
+ },
+ ),
+ migrations.CreateModel(
+ name='StatsCache',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('model', models.CharField(max_length=200, verbose_name='Model name')),
+ ('model_pk', models.IntegerField(verbose_name='Associated primary key')),
+ ('values', django.contrib.postgres.fields.jsonb.JSONField(blank=True, default={})),
+ ('updated', models.DateTimeField(default=datetime.datetime.now)),
+ ('update_requested', models.DateTimeField(blank=True, null=True)),
+ ],
+ options={
+ 'verbose_name': 'Cache for stats',
+ 'verbose_name_plural': 'Caches for stats',
+ },
+ ),
+ migrations.CreateModel(
+ name='SupportType',
+ 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': 'Support type',
+ 'verbose_name_plural': 'Support types',
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='TargetKey',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('key', models.TextField(verbose_name='Key')),
+ ('value', models.TextField(blank=True, null=True, verbose_name='Value')),
+ ('is_set', models.BooleanField(default=False, verbose_name='Is set')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Target key',
+ 'verbose_name_plural': 'Importer - Targets keys',
+ 'ordering': ('target', 'key'),
+ },
+ ),
+ migrations.CreateModel(
+ name='TargetKeyGroup',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.TextField(unique=True, verbose_name='Name')),
+ ('all_user_can_use', models.BooleanField(default=False, verbose_name='All users can use it')),
+ ('all_user_can_modify', models.BooleanField(default=False, verbose_name='All users can modify it')),
+ ('available', models.BooleanField(default=True, verbose_name='Available')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Target key group',
+ 'verbose_name_plural': 'Importer - Target key groups',
+ },
+ ),
+ migrations.CreateModel(
+ name='TinyUrl',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('link', models.URLField()),
+ ],
+ ),
+ migrations.CreateModel(
+ name='TitleType',
+ 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': 'Title type',
+ 'verbose_name_plural': 'Title types',
+ 'ordering': ('label',),
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.CreateModel(
+ name='Town',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=100, verbose_name='Name')),
+ ('surface', models.IntegerField(blank=True, null=True, verbose_name='Surface (m2)')),
+ ('center', django.contrib.gis.db.models.fields.PointField(blank=True, null=True, srid=27572, verbose_name='Localisation')),
+ ('limit', django.contrib.gis.db.models.fields.MultiPolygonField(blank=True, null=True, srid=4326, verbose_name='Limit')),
+ ('numero_insee', models.CharField(max_length=120, verbose_name='Code commune (numéro INSEE)')),
+ ('year', models.IntegerField(blank=True, help_text='Filling this field is relevant to distinguish old towns from new towns.', null=True, verbose_name='Year of creation')),
+ ('cached_label', models.CharField(blank=True, db_index=True, max_length=500, null=True, verbose_name='Cached name')),
+ ('children', models.ManyToManyField(blank=True, related_name='parents', to='ishtar_common.Town', verbose_name='Town children')),
+ ('departement', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Department', verbose_name='Department')),
+ ('imports', models.ManyToManyField(blank=True, related_name='imported_ishtar_common_town', to='ishtar_common.Import')),
+ ],
+ options={
+ 'verbose_name': 'Town',
+ 'verbose_name_plural': 'Towns',
+ 'ordering': ['numero_insee'],
+ },
+ ),
+ migrations.CreateModel(
+ name='UserProfile',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(blank=True, default='', max_length=100, verbose_name='Name')),
+ ('current', models.BooleanField(default=False, verbose_name='Current profile')),
+ ('show_field_number', models.BooleanField(default=False, verbose_name='Show field number')),
+ ('auto_pin', models.BooleanField(default=False, verbose_name='Automatically pin')),
+ ('display_pin_menu', models.BooleanField(default=False, verbose_name='Display pin menu')),
+ ('areas', models.ManyToManyField(blank=True, related_name='profiles', to='ishtar_common.Area', verbose_name='Areas')),
+ ('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='profiles', to='ishtar_common.Person', verbose_name='Person')),
+ ('profile_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ProfileType', verbose_name='Profile type')),
+ ],
+ options={
+ 'verbose_name': 'User profile',
+ 'verbose_name_plural': 'User profiles',
+ },
+ ),
+ migrations.CreateModel(
+ name='ValueFormater',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=100, unique=True, verbose_name='Name')),
+ ('slug', models.SlugField(max_length=100, unique=True, verbose_name='Slug')),
+ ('description', models.TextField(blank=True, null=True, verbose_name='Description')),
+ ('format_string', models.CharField(help_text='A string used to format a value using the Python "format()" method. The site https://pyformat.info/ provide good examples of usage. Only one "{}" entry is managed. The input is assumed to be a string.', max_length=100, verbose_name='Format string')),
+ ],
+ options={
+ 'verbose_name': 'Importer - Value format',
+ 'verbose_name_plural': 'Importer - Value formats',
+ },
+ ),
+ migrations.AddField(
+ model_name='targetkey',
+ name='associated_group',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.TargetKeyGroup'),
+ ),
+ migrations.AddField(
+ model_name='targetkey',
+ name='associated_import',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Import'),
+ ),
+ migrations.AddField(
+ model_name='targetkey',
+ name='associated_user',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='targetkey',
+ name='target',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='keys', to='ishtar_common.ImportTarget'),
+ ),
+ migrations.AddField(
+ model_name='searchquery',
+ name='profile',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.UserProfile', verbose_name='Profile'),
+ ),
+ migrations.AddField(
+ model_name='person',
+ name='person_types',
+ field=models.ManyToManyField(to='ishtar_common.PersonType', verbose_name='Types'),
+ ),
+ migrations.AddField(
+ model_name='person',
+ name='precise_town',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Town', verbose_name='Town (precise)'),
+ ),
+ migrations.AddField(
+ model_name='person',
+ name='title',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.TitleType', verbose_name='Title'),
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='organization_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.OrganizationType', verbose_name='Type'),
+ ),
+ migrations.AddField(
+ model_name='organization',
+ name='precise_town',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Town', verbose_name='Town (precise)'),
+ ),
+ migrations.AddField(
+ model_name='jsondatafield',
+ name='section',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.JsonDataSection'),
+ ),
+ migrations.AddField(
+ model_name='itemkey',
+ name='group',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.TargetKeyGroup'),
+ ),
+ migrations.AddField(
+ 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.CASCADE, to='ishtar_common.Import'),
+ ),
+ migrations.AddField(
+ model_name='itemkey',
+ name='user',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='ishtaruser',
+ name='person',
+ field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='ishtaruser', to='ishtar_common.Person', verbose_name='Person'),
+ ),
+ migrations.AddField(
+ 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.CASCADE, to='ishtar_common.SpatialReferenceSystem', verbose_name='Spatial Reference System for display'),
+ ),
+ migrations.AddField(
+ model_name='importtask',
+ name='import_user',
+ field=models.ForeignKey(blank=True, help_text='If set the "Import user" will be the editor for last version. If the field is left empty no history will be recorded.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Import user'),
+ ),
+ migrations.AddField(
+ model_name='importertype',
+ name='users',
+ field=models.ManyToManyField(blank=True, to='ishtar_common.IshtarUser', verbose_name='Users'),
+ ),
+ migrations.AddField(
+ model_name='importerdefault',
+ name='importer_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='defaults', to='ishtar_common.ImporterType'),
+ ),
+ migrations.AddField(
+ model_name='importercolumn',
+ name='importer_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='columns', to='ishtar_common.ImporterType'),
+ ),
+ migrations.AddField(
+ model_name='importercolumn',
+ name='regexp_pre_filter',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Regexp'),
+ ),
+ migrations.AddField(
+ model_name='importercolumn',
+ name='value_format',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.ValueFormater'),
+ ),
+ migrations.AddField(
+ model_name='import',
+ name='associated_group',
+ field=models.ForeignKey(blank=True, help_text='If a group is selected, target key saved in this group will be used.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.TargetKeyGroup'),
+ ),
+ migrations.AddField(
+ model_name='import',
+ name='importer_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ImporterType'),
+ ),
+ migrations.AddField(
+ model_name='import',
+ name='user',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='historicalperson',
+ name='attached_to',
+ 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='historicalperson',
+ name='history_creator',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='historicalperson',
+ name='history_modifier',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='historicalperson',
+ name='history_user',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='historicalperson',
+ name='lock_user',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='historicalperson',
+ name='precise_town',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Town'),
+ ),
+ migrations.AddField(
+ model_name='historicalperson',
+ name='title',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.TitleType'),
+ ),
+ migrations.AddField(
+ model_name='historicalorganization',
+ name='history_creator',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='historicalorganization',
+ name='history_modifier',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='historicalorganization',
+ name='history_user',
+ field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='historicalorganization',
+ name='lock_user',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL),
+ ),
+ migrations.AddField(
+ model_name='historicalorganization',
+ name='organization_type',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.OrganizationType'),
+ ),
+ migrations.AddField(
+ model_name='historicalorganization',
+ name='precise_town',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Town'),
+ ),
+ migrations.AlterUniqueTogether(
+ name='formatertype',
+ unique_together=set([('formater_type', 'options', 'many_split')]),
+ ),
+ migrations.AddField(
+ model_name='exporttask',
+ name='lock_user',
+ field=models.ForeignKey(blank=True, help_text='Owner of the lock if item are locked. Warning: if no user is provided the locks can be remove by any user with the permission to edit.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Lock user'),
+ ),
+ migrations.AddField(
+ model_name='documenttemplate',
+ name='associated_model',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ImporterModel'),
+ ),
+ migrations.AddField(
+ model_name='document',
+ name='format_type',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.Format', verbose_name='Format'),
+ ),
+ migrations.AddField(
+ model_name='document',
+ 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='document',
+ 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='document',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_ishtar_common_document', to='ishtar_common.Import'),
+ ),
+ migrations.AddField(
+ model_name='document',
+ name='licenses',
+ field=models.ManyToManyField(blank=True, to='ishtar_common.LicenseType', verbose_name='License'),
+ ),
+ migrations.AddField(
+ model_name='document',
+ 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='document',
+ name='source_type',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.SourceType', verbose_name='Type'),
+ ),
+ migrations.AddField(
+ model_name='document',
+ name='support_type',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.SupportType', verbose_name='Support'),
+ ),
+ migrations.AddField(
+ model_name='department',
+ name='state',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ishtar_common.State', verbose_name='State'),
+ ),
+ migrations.AddField(
+ model_name='customformjsonfield',
+ name='json_field',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='custom_form_details', to='ishtar_common.JsonDataField'),
+ ),
+ migrations.AddField(
+ model_name='customform',
+ name='user_types',
+ field=models.ManyToManyField(blank=True, to='ishtar_common.PersonType'),
+ ),
+ migrations.AddField(
+ model_name='customform',
+ name='users',
+ field=models.ManyToManyField(blank=True, to='ishtar_common.IshtarUser'),
+ ),
+ migrations.AddField(
+ model_name='author',
+ name='author_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.AuthorType', verbose_name='Author type'),
+ ),
+ migrations.AddField(
+ model_name='author',
+ name='person',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='author', to='ishtar_common.Person', verbose_name='Person'),
+ ),
+ migrations.AddField(
+ model_name='arrondissement',
+ name='department',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.Department', verbose_name='Département'),
+ ),
+ migrations.AddField(
+ model_name='area',
+ name='towns',
+ field=models.ManyToManyField(blank=True, related_name='areas', to='ishtar_common.Town', verbose_name='Towns'),
+ ),
+ migrations.CreateModel(
+ name='ProfileTypeSummary',
+ fields=[
+ ],
+ options={
+ 'verbose_name': 'Profile type summary',
+ 'verbose_name_plural': 'Profile types summary',
+ 'proxy': True,
+ 'indexes': [],
+ },
+ bases=('ishtar_common.profiletype',),
+ ),
+ migrations.AlterUniqueTogether(
+ name='userprofile',
+ unique_together=set([('name', 'profile_type', 'person')]),
+ ),
+ migrations.AlterUniqueTogether(
+ name='town',
+ unique_together=set([('numero_insee', 'year')]),
+ ),
+ migrations.AlterUniqueTogether(
+ name='targetkey',
+ unique_together=set([('target', 'key', 'associated_user', 'associated_import')]),
+ ),
+ migrations.AddIndex(
+ model_name='person',
+ index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='ishtar_comm_data_a563fb_gin'),
+ ),
+ migrations.AddIndex(
+ model_name='organization',
+ index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='ishtar_comm_data_36ecc0_gin'),
+ ),
+ migrations.AlterUniqueTogether(
+ name='jsondatasection',
+ unique_together=set([('name', 'content_type')]),
+ ),
+ migrations.AlterUniqueTogether(
+ name='jsondatafield',
+ unique_together=set([('content_type', 'key')]),
+ ),
+ migrations.AlterUniqueTogether(
+ name='importtarget',
+ unique_together=set([('column', 'target')]),
+ ),
+ migrations.AlterUniqueTogether(
+ name='importerduplicatefield',
+ unique_together=set([('column', 'field_name')]),
+ ),
+ migrations.AlterUniqueTogether(
+ name='importerdefaultvalues',
+ unique_together=set([('default_target', 'target')]),
+ ),
+ migrations.AlterUniqueTogether(
+ name='importerdefault',
+ unique_together=set([('importer_type', 'target')]),
+ ),
+ migrations.AlterUniqueTogether(
+ name='importercolumn',
+ unique_together=set([('importer_type', 'col_number')]),
+ ),
+ migrations.AlterUniqueTogether(
+ name='excludedfield',
+ unique_together=set([('custom_form', 'field')]),
+ ),
+ migrations.AddIndex(
+ model_name='document',
+ index=django.contrib.postgres.indexes.GinIndex(fields=['data'], name='ishtar_comm_data_c6da6f_gin'),
+ ),
+ migrations.AlterUniqueTogether(
+ name='customformjsonfield',
+ unique_together=set([('custom_form', 'json_field')]),
+ ),
+ migrations.AlterUniqueTogether(
+ name='customform',
+ unique_together=set([('name', 'form')]),
+ ),
+ ]