summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2025-05-01 15:35:06 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2025-10-15 19:32:59 +0200
commitad5ac29b7fdf728a43385aeb5954ff807d2fe642 (patch)
tree75db8fb91000893f7aa8299547cd2a963cc0b4d3
parent1f89d15745a53fb2292a91fa68b2cdc3857f434f (diff)
downloadIshtar-ad5ac29b7fdf728a43385aeb5954ff807d2fe642.tar.bz2
Ishtar-ad5ac29b7fdf728a43385aeb5954ff807d2fe642.zip
🗃️ database migrations: django 3/4 - timezone
-rw-r--r--archaeological_context_records/migrations/0123_add_timezone_django_v4.py162
-rw-r--r--archaeological_files/migrations/0120_add_timezone_django_v4.py191
-rw-r--r--archaeological_finds/migrations/0140_add_timezone_django_v4.py663
-rw-r--r--archaeological_operations/migrations/0123_add_timezone_django_v4.py460
-rw-r--r--archaeological_warehouse/migrations/0124_add_timezone_django_v4.py211
-rw-r--r--ishtar_common/migrations/0264_add_timezone_django_v4.py459
-rw-r--r--ishtar_common/migrations/0265_userrequesttoken_usertoken.py64
7 files changed, 2210 insertions, 0 deletions
diff --git a/archaeological_context_records/migrations/0123_add_timezone_django_v4.py b/archaeological_context_records/migrations/0123_add_timezone_django_v4.py
new file mode 100644
index 000000000..96f58b6ea
--- /dev/null
+++ b/archaeological_context_records/migrations/0123_add_timezone_django_v4.py
@@ -0,0 +1,162 @@
+# Generated by Django 4.2.19 on 2025-05-01 13:29
+
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+import re
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0264_add_timezone_django_v4'),
+ ('archaeological_context_records', '0122_cr_ishtar_users'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='historicalcontextrecord',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Context Record', 'verbose_name_plural': 'historical Context Record'},
+ ),
+ migrations.AlterField(
+ model_name='activitytype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='colortype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='geodata',
+ field=models.ManyToManyField(blank=True, related_name='related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Geodata'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='contextrecord',
+ name='main_geodata',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Main geodata'),
+ ),
+ migrations.AlterField(
+ model_name='datingquality',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='datingtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='documentationtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='excavationtechnictype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontextrecord',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='identificationtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='inclusiontype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='recordrelations',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='recordrelations',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='relationtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='structuretype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='texturetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='unit',
+ name='txt_idx',
+ field=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'),
+ ),
+ ]
diff --git a/archaeological_files/migrations/0120_add_timezone_django_v4.py b/archaeological_files/migrations/0120_add_timezone_django_v4.py
new file mode 100644
index 000000000..a89358fad
--- /dev/null
+++ b/archaeological_files/migrations/0120_add_timezone_django_v4.py
@@ -0,0 +1,191 @@
+# Generated by Django 4.2.19 on 2025-05-01 13:30
+
+import django.core.validators
+from django.db import migrations, models
+import django.utils.timezone
+import re
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0264_add_timezone_django_v4'),
+ ('archaeological_files', '0119_file_ishtar_users'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='historicalfile',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Archaeological file', 'verbose_name_plural': 'historical Archaeological files'},
+ ),
+ migrations.AlterField(
+ model_name='agreementtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='developmenttype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='equipmentservicetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='cira_advised',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Passage en CIRA'),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='classified_area',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Classified area'),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='mh_listing',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Sur Monument Historique inscrit'),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='mh_register',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Sur Monument Historique classé'),
+ ),
+ migrations.AlterField(
+ model_name='file',
+ name='protected_area',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Protected area'),
+ ),
+ migrations.AlterField(
+ model_name='filetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='genericequipmentservicetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='historicalfile',
+ name='cira_advised',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Passage en CIRA'),
+ ),
+ migrations.AlterField(
+ model_name='historicalfile',
+ name='classified_area',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Classified area'),
+ ),
+ migrations.AlterField(
+ model_name='historicalfile',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalfile',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalfile',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalfile',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalfile',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalfile',
+ name='mh_listing',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Sur Monument Historique inscrit'),
+ ),
+ migrations.AlterField(
+ model_name='historicalfile',
+ name='mh_register',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Sur Monument Historique classé'),
+ ),
+ migrations.AlterField(
+ model_name='historicalfile',
+ name='protected_area',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Protected area'),
+ ),
+ migrations.AlterField(
+ model_name='job',
+ name='permanent_contract',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Permanent contract'),
+ ),
+ migrations.AlterField(
+ model_name='job',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='monitoringjustificationtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='operationtypeforroyalties',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='permittype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='priceagreement',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='saisinetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ ]
diff --git a/archaeological_finds/migrations/0140_add_timezone_django_v4.py b/archaeological_finds/migrations/0140_add_timezone_django_v4.py
new file mode 100644
index 000000000..51b3ab93b
--- /dev/null
+++ b/archaeological_finds/migrations/0140_add_timezone_django_v4.py
@@ -0,0 +1,663 @@
+# Generated by Django 4.2.19 on 2025-05-01 13:32
+
+import archaeological_finds.models_treatments
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+import re
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0264_add_timezone_django_v4'),
+ ('archaeological_finds', '0139_data_migration_owner_ownership'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='historicalbasefind',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Base find', 'verbose_name_plural': 'historical Base finds'},
+ ),
+ migrations.AlterModelOptions(
+ name='historicalexhibition',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Exhibition', 'verbose_name_plural': 'historical Exhibitions'},
+ ),
+ migrations.AlterModelOptions(
+ name='historicalfind',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Find', 'verbose_name_plural': 'historical Finds'},
+ ),
+ migrations.AlterModelOptions(
+ name='historicaltreatment',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Treatment', 'verbose_name_plural': 'historical Treatments'},
+ ),
+ migrations.AlterModelOptions(
+ name='historicaltreatmentfile',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Treatment request', 'verbose_name_plural': 'historical Treatment requests'},
+ ),
+ migrations.AlterModelOptions(
+ name='treatmentstate',
+ options={'ordering': ('order', 'label'), 'verbose_name': 'Treatment state type - deprecated', 'verbose_name_plural': 'Treatment state types - deprecated'},
+ ),
+ migrations.AlterField(
+ model_name='alterationcausetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='alterationtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='cache_complete_id',
+ field=models.TextField(blank=True, db_index=True, default='', help_text='Cached value - do not edit', verbose_name='Complete ID - cached'),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='cache_short_id',
+ field=models.TextField(blank=True, db_index=True, default='', help_text='Cached value - do not edit', verbose_name='Short ID - cached'),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='geodata',
+ field=models.ManyToManyField(blank=True, related_name='related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Geodata'),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='basefind',
+ name='main_geodata',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Main geodata'),
+ ),
+ migrations.AlterField(
+ model_name='batchtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='checkedtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='collectionentrymodetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='communicabilitytype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='conservatorystate',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='discoverymethod',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='exhibition',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='exhibition',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='exhibition',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='exhibition',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='exhibition',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='exhibition',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='exhibition',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='exhibitiontype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='find',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='find',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='find',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='find',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='find',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='find',
+ name='is_complete',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Is complete?'),
+ ),
+ migrations.AlterField(
+ model_name='find',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='find',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='find',
+ name='mark',
+ field=models.TextField(blank=True, default='', verbose_name='Mark'),
+ ),
+ migrations.AlterField(
+ model_name='findbasket',
+ name='shared_with',
+ field=models.ManyToManyField(blank=True, related_name='shared_%(class)ss', to='ishtar_common.ishtaruser', verbose_name='Shared (read) with'),
+ ),
+ migrations.AlterField(
+ model_name='findbasket',
+ name='shared_write_with',
+ field=models.ManyToManyField(blank=True, related_name='shared_write_%(class)ss', to='ishtar_common.ishtaruser', verbose_name='Shared (read/edit) with'),
+ ),
+ migrations.AlterField(
+ model_name='findbasket',
+ name='user',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='%(class)ss', to='ishtar_common.ishtaruser', verbose_name='Owner'),
+ ),
+ migrations.AlterField(
+ model_name='findtreatment',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='findtreatment',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='functionalarea',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='historicalbasefind',
+ name='cache_complete_id',
+ field=models.TextField(blank=True, db_index=True, default='', help_text='Cached value - do not edit', verbose_name='Complete ID - cached'),
+ ),
+ migrations.AlterField(
+ model_name='historicalbasefind',
+ name='cache_short_id',
+ field=models.TextField(blank=True, db_index=True, default='', help_text='Cached value - do not edit', verbose_name='Short ID - cached'),
+ ),
+ migrations.AlterField(
+ model_name='historicalbasefind',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalbasefind',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalbasefind',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalbasefind',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalbasefind',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalexhibition',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalexhibition',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalexhibition',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalexhibition',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalexhibition',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalfind',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalfind',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalfind',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalfind',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalfind',
+ name='is_complete',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Is complete?'),
+ ),
+ migrations.AlterField(
+ model_name='historicalfind',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalfind',
+ name='mark',
+ field=models.TextField(blank=True, default='', verbose_name='Mark'),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='creation_date',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='end_date',
+ field=models.DateField(blank=True, null=True, verbose_name='End date'),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='input_status',
+ field=models.ForeignKey(blank=True, db_constraint=False, default=archaeological_finds.models_treatments.TreatmentInputStatus.get_default, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.treatmentinputstatus', verbose_name='Input status'),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='person',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.person', verbose_name='Responsible of the treatment'),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatment',
+ name='treatment_state',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.treatmentstate', verbose_name='State - deprecated use input_status and treatment_status'),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatmentfile',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatmentfile',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatmentfile',
+ name='end_date',
+ field=models.DateField(blank=True, null=True, verbose_name='End date'),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatmentfile',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatmentfile',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicaltreatmentfile',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='integritytype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='inventoryconformity',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='inventorymarkingpresence',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='markingtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='materialtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='materialtypequalitytype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='museumcollection',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='objecttype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='objecttypequalitytype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='originalreproduction',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='property',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='property',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='property',
+ name='history_date',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='property',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='property',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='property',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='property',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='property',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='remarkabilitytype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='technicalareatype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='technicalprocesstype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='creation_date',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='end_date',
+ field=models.DateField(blank=True, null=True, verbose_name='End date'),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='input_status',
+ field=models.ForeignKey(blank=True, default=archaeological_finds.models_treatments.TreatmentInputStatus.get_default, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.treatmentinputstatus', verbose_name='Input status'),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='person',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='treatments', to='ishtar_common.person', verbose_name='Responsible of the treatment'),
+ ),
+ migrations.AlterField(
+ model_name='treatment',
+ name='treatment_state',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='archaeological_finds.treatmentstate', verbose_name='State - deprecated use input_status and treatment_status'),
+ ),
+ migrations.AlterField(
+ model_name='treatmentemergencytype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='treatmentfile',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='treatmentfile',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='treatmentfile',
+ name='end_date',
+ field=models.DateField(blank=True, null=True, verbose_name='End date'),
+ ),
+ migrations.AlterField(
+ model_name='treatmentfile',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='treatmentfile',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='treatmentfile',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='treatmentfile',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='treatmentfile',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='treatmentfiletype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='treatmentinputstatus',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='treatmentstate',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='treatmentstatus',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='treatmenttype',
+ name='txt_idx',
+ field=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'),
+ ),
+ ]
diff --git a/archaeological_operations/migrations/0123_add_timezone_django_v4.py b/archaeological_operations/migrations/0123_add_timezone_django_v4.py
new file mode 100644
index 000000000..b73ef94c2
--- /dev/null
+++ b/archaeological_operations/migrations/0123_add_timezone_django_v4.py
@@ -0,0 +1,460 @@
+# Generated by Django 4.2.19 on 2025-05-01 13:28
+
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+import re
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0264_add_timezone_django_v4'),
+ ('archaeological_operations', '0122_admin_act_many_intented_to'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='historicaladministrativeact',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Administrative act', 'verbose_name_plural': 'historical Administrative acts'},
+ ),
+ migrations.AlterModelOptions(
+ name='historicalarchaeologicalsite',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Archaeological site', 'verbose_name_plural': 'historical Archaeological sites'},
+ ),
+ migrations.AlterModelOptions(
+ name='historicaloperation',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Operation', 'verbose_name_plural': 'historical Operations'},
+ ),
+ migrations.AlterField(
+ model_name='acttype',
+ name='intented_to',
+ field=models.CharField(choices=[('F', 'Archaeological file'), ('O', 'Operation'), ('TF', 'Treatment request'), ('T', 'Treatment')], help_text='Deprecated: do not use', max_length=2, verbose_name='Intended to'),
+ ),
+ migrations.AlterField(
+ model_name='acttype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='administrativeact',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='administrativeact',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='administrativeact',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='administrativeact',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='administrativeact',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='administrativeact',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='administrativeact',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='administrativeact',
+ name='ref_sra',
+ field=models.CharField(blank=True, max_length=200, null=True, verbose_name='Internal reference'),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='geodata',
+ field=models.ManyToManyField(blank=True, related_name='related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Geodata'),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='archaeologicalsite',
+ name='main_geodata',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Main geodata'),
+ ),
+ migrations.AlterField(
+ model_name='culturalattributiontype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='historicaladministrativeact',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicaladministrativeact',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicaladministrativeact',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicaladministrativeact',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicaladministrativeact',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicaladministrativeact',
+ name='ref_sra',
+ field=models.CharField(blank=True, max_length=200, null=True, verbose_name='Internal reference'),
+ ),
+ migrations.AlterField(
+ model_name='historicalarchaeologicalsite',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalarchaeologicalsite',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalarchaeologicalsite',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalarchaeologicalsite',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalarchaeologicalsite',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='documentation_received',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Documentation provided'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='finds_received',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Finds provided'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='geoarchaeological_context_prescription',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Prescription on geoarchaeological context'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='large_area_prescription',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Prescription on large area'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='negative_result',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Result considered negative'),
+ ),
+ migrations.AlterField(
+ model_name='historicaloperation',
+ name='zoning_prescription',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Prescription on zoning'),
+ ),
+ migrations.AlterField(
+ model_name='interpretationleveltype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='natureofsitetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='documentation_received',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Documentation provided'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='finds_received',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Finds provided'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='geoarchaeological_context_prescription',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Prescription on geoarchaeological context'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='geodata',
+ field=models.ManyToManyField(blank=True, related_name='related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Geodata'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='large_area_prescription',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Prescription on large area'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='main_geodata',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Main geodata'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='negative_result',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Result considered negative'),
+ ),
+ migrations.AlterField(
+ model_name='operation',
+ name='zoning_prescription',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Prescription on zoning'),
+ ),
+ migrations.AlterField(
+ model_name='operationtypeold',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='parcel',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='parcel',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='parcel',
+ name='history_date',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='parcel',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='parcel',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='parcel',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='parcel',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='parcel',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='parcelowner',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='parcelowner',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='parcelowner',
+ name='history_date',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='parcelowner',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='parcelowner',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='parcelowner',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='parcelowner',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='parcelowner',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='period',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='recordqualitytype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='recordrelations',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='recordrelations',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='relationtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='remaintype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='reportstate',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='sitecurrentstatustype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='sitediscoverystatustype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='sitetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ ]
diff --git a/archaeological_warehouse/migrations/0124_add_timezone_django_v4.py b/archaeological_warehouse/migrations/0124_add_timezone_django_v4.py
new file mode 100644
index 000000000..ae0feaed9
--- /dev/null
+++ b/archaeological_warehouse/migrations/0124_add_timezone_django_v4.py
@@ -0,0 +1,211 @@
+# Generated by Django 4.2.19 on 2025-05-01 13:33
+
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+import re
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0264_add_timezone_django_v4'),
+ ('archaeological_warehouse', '0123_warehouse_container_ishtar_users'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='historicalcontainer',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Container', 'verbose_name_plural': 'historical Containers'},
+ ),
+ migrations.AlterModelOptions(
+ name='historicalwarehouse',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Warehouse', 'verbose_name_plural': 'historical Warehouses'},
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='archived',
+ field=models.BooleanField(blank=True, default=False, null=True),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='geodata',
+ field=models.ManyToManyField(blank=True, related_name='related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Geodata'),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='history_date_deprecated',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='main_geodata',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Main geodata'),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='merge_candidate',
+ field=models.ManyToManyField(blank=True, to='archaeological_warehouse.container'),
+ ),
+ migrations.AlterField(
+ model_name='container',
+ name='merge_exclusion',
+ field=models.ManyToManyField(blank=True, to='archaeological_warehouse.container'),
+ ),
+ migrations.AlterField(
+ model_name='containertype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontainer',
+ name='archived',
+ field=models.BooleanField(blank=True, default=False, null=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontainer',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontainer',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontainer',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontainer',
+ name='history_date_deprecated',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontainer',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalcontainer',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalwarehouse',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalwarehouse',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalwarehouse',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalwarehouse',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalwarehouse',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='warehouse',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='warehouse',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='warehouse',
+ name='geodata',
+ field=models.ManyToManyField(blank=True, related_name='related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Geodata'),
+ ),
+ migrations.AlterField(
+ model_name='warehouse',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='warehouse',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='warehouse',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='warehouse',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='warehouse',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='warehouse',
+ name='main_geodata',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Main geodata'),
+ ),
+ migrations.AlterField(
+ model_name='warehousedivision',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='warehousetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ ]
diff --git a/ishtar_common/migrations/0264_add_timezone_django_v4.py b/ishtar_common/migrations/0264_add_timezone_django_v4.py
new file mode 100644
index 000000000..03c206fd0
--- /dev/null
+++ b/ishtar_common/migrations/0264_add_timezone_django_v4.py
@@ -0,0 +1,459 @@
+# Generated by Django 4.2.19 on 2025-05-01 13:24
+
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+import re
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0263_media_exporter'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='historicaldocument',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Document', 'verbose_name_plural': 'historical Documents'},
+ ),
+ migrations.AlterModelOptions(
+ name='historicalorganization',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Organization', 'verbose_name_plural': 'historical Organizations'},
+ ),
+ migrations.AlterModelOptions(
+ name='historicalperson',
+ options={'get_latest_by': ('history_date', 'history_id'), 'ordering': ('-history_date', '-history_id'), 'verbose_name': 'historical Person', 'verbose_name_plural': 'historical Persons'},
+ ),
+ migrations.AlterField(
+ model_name='administrationtask',
+ name='creation_date',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='area',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='authortype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='backgroundtask',
+ name='creation_date',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='biographicalnote',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='biographicalnote',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='biographicalnote',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='biographicalnote',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='biographicalnote',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='biographicalnote',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='biographicalnote',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='duplicate',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Has a duplicate'),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='document',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='documenttag',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='exporttask',
+ name='creation_date',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='format',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='gdprlog',
+ name='date',
+ field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Date'),
+ ),
+ migrations.AlterField(
+ model_name='gdprlog',
+ name='persons',
+ field=models.ManyToManyField(blank=True, related_name='logs', to='ishtar_common.gdprperson', verbose_name='Persons'),
+ ),
+ migrations.AlterField(
+ model_name='geobuffertype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='geodatatype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='geoorigintype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='geoprovidertype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='geovectordata',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='geovectordata',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='historicaldocument',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicaldocument',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicaldocument',
+ name='duplicate',
+ field=models.BooleanField(blank=True, null=True, verbose_name='Has a duplicate'),
+ ),
+ migrations.AlterField(
+ model_name='historicaldocument',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicaldocument',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicaldocument',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalorganization',
+ name='archived',
+ field=models.BooleanField(blank=True, default=False, null=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalorganization',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalorganization',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalorganization',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalorganization',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalorganization',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalperson',
+ name='archived',
+ field=models.BooleanField(blank=True, default=False, null=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalperson',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='historicalperson',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalperson',
+ name='history_date',
+ field=models.DateTimeField(db_index=True),
+ ),
+ migrations.AlterField(
+ model_name='historicalperson',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='historicalperson',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='importtask',
+ name='creation_date',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='language',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='licensetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='operationtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='organization',
+ name='archived',
+ field=models.BooleanField(blank=True, default=False, null=True),
+ ),
+ migrations.AlterField(
+ model_name='organization',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='organization',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='organization',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='organization',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='organization',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='organization',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='organization',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='organization',
+ name='merge_candidate',
+ field=models.ManyToManyField(blank=True, to='ishtar_common.organization'),
+ ),
+ migrations.AlterField(
+ model_name='organization',
+ name='merge_exclusion',
+ field=models.ManyToManyField(blank=True, to='ishtar_common.organization'),
+ ),
+ migrations.AlterField(
+ model_name='organizationtype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='person',
+ name='archived',
+ field=models.BooleanField(blank=True, default=False, null=True),
+ ),
+ migrations.AlterField(
+ model_name='person',
+ name='created',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='person',
+ name='data',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='person',
+ name='history_m2m',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='person',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='person',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ model_name='person',
+ name='ishtar_users',
+ field=models.ManyToManyField(blank=True, related_name='%(class)s_associated', to='ishtar_common.ishtaruser'),
+ ),
+ migrations.AlterField(
+ model_name='person',
+ name='last_modified',
+ field=models.DateTimeField(blank=True, default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='person',
+ name='merge_candidate',
+ field=models.ManyToManyField(blank=True, to='ishtar_common.person'),
+ ),
+ migrations.AlterField(
+ model_name='person',
+ name='merge_exclusion',
+ field=models.ManyToManyField(blank=True, to='ishtar_common.person'),
+ ),
+ migrations.AlterField(
+ model_name='persontype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='profiletype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='shootingangle',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='sourcetype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='spatialreferencesystem',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='statscache',
+ name='updated',
+ field=models.DateTimeField(default=django.utils.timezone.now),
+ ),
+ migrations.AlterField(
+ model_name='statscache',
+ name='values',
+ field=models.JSONField(blank=True, default=dict),
+ ),
+ migrations.AlterField(
+ model_name='supporttype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='titletype',
+ name='txt_idx',
+ field=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'),
+ ),
+ migrations.AlterField(
+ model_name='town',
+ name='geodata',
+ field=models.ManyToManyField(blank=True, related_name='related_items_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Geodata'),
+ ),
+ migrations.AlterField(
+ model_name='town',
+ name='imports',
+ field=models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports'),
+ ),
+ migrations.AlterField(
+ model_name='town',
+ name='imports_updated',
+ field=models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports'),
+ ),
+ migrations.AlterField(
+ 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_%(app_label)s_%(class)s', to='ishtar_common.geovectordata', verbose_name='Main geodata'),
+ ),
+ ]
diff --git a/ishtar_common/migrations/0265_userrequesttoken_usertoken.py b/ishtar_common/migrations/0265_userrequesttoken_usertoken.py
new file mode 100644
index 000000000..6f80a5368
--- /dev/null
+++ b/ishtar_common/migrations/0265_userrequesttoken_usertoken.py
@@ -0,0 +1,64 @@
+# Generated by Django 4.2.19 on 2025-05-09 08:25
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('auth', '0012_alter_user_first_name_max_length'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('ishtar_common', '0264_add_timezone_django_v4'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='UserRequestToken',
+ fields=[
+ ('created', models.DateTimeField(auto_now_add=True, verbose_name='Created')),
+ ('key', models.CharField(max_length=6, unique=True, verbose_name='Key')),
+ ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='user_request_token', serialize=False, to=settings.AUTH_USER_MODEL, verbose_name='User')),
+ ('access_type', models.CharField(choices=[('R', 'GIS - read'), ('W', 'GIS - read/write')], default='R', max_length=1, verbose_name='Access type')),
+ ('name', models.TextField(verbose_name='Name')),
+ ('limit_date', models.DateField(blank=True, null=True, verbose_name='Limit date')),
+ ],
+ options={
+ 'verbose_name': 'API - GIS - Request token',
+ 'verbose_name_plural': 'API - GIS - Request tokens',
+ },
+ ),
+ migrations.AlterModelOptions(
+ name='importertype',
+ options={'ordering': ('name',), 'permissions': (('view_gis_importer', 'Can export to QGIS'), ('view_own_gis_importer', 'Can export own to QGIS'), ('change_gis_importer', 'Can import from QGIS'), ('change_own_gis_importer', 'Can import own to QGIS')), 'verbose_name': 'Importer - Type', 'verbose_name_plural': 'Importer - Types'},
+ ),
+ migrations.AddField(
+ model_name='ishtarsiteprofile',
+ name='gis_connector',
+ field=models.BooleanField(default=False, verbose_name='GIS connector'),
+ ),
+ migrations.AlterField(
+ model_name='importertype',
+ name='type',
+ field=models.CharField(choices=[('tab', 'Table'), ('gis', 'GIS'), ('qgs', 'QGIS')], default='tab', max_length=3, verbose_name='Type'),
+ ),
+ migrations.CreateModel(
+ name='UserToken',
+ fields=[
+ ('key', models.CharField(max_length=40, primary_key=True, serialize=False, verbose_name='Key')),
+ ('name', models.TextField(verbose_name='Name')),
+ ('created', models.DateTimeField(auto_now_add=True, verbose_name='Created')),
+ ('access_type', models.CharField(choices=[('R', 'GIS - read'), ('W', 'GIS - read/write')], default='R', max_length=1, verbose_name='Access type')),
+ ('limit_date', models.DateField(blank=True, null=True, verbose_name='Limit date')),
+ ('last_ip', models.GenericIPAddressField(blank=True, null=True, verbose_name='Last IP')),
+ ('last_access', models.DateField(auto_now_add=True, verbose_name='Last access date')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_token', to=settings.AUTH_USER_MODEL, verbose_name='User')),
+ ],
+ options={
+ 'verbose_name': 'API - GIS - Token',
+ 'verbose_name_plural': 'API - GIS - Tokens',
+ 'ordering': ('user', 'name', 'limit_date'),
+ },
+ ),
+ ]