diff options
Diffstat (limited to 'archaeological_finds/migrations')
7 files changed, 400 insertions, 0 deletions
diff --git a/archaeological_finds/migrations/0149_add_editors.py b/archaeological_finds/migrations/0149_add_editors.py new file mode 100644 index 000000000..a74739a1d --- /dev/null +++ b/archaeological_finds/migrations/0149_add_editors.py @@ -0,0 +1,64 @@ +# Generated by Django 4.2.21 on 2026-04-02 06:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0276_add_editors'), + ('archaeological_finds', '0148_statementcondition_documents'), + ] + + operations = [ + migrations.AddField( + model_name='basefind', + name='editors', + field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'), + ), + migrations.AddField( + model_name='exhibition', + name='editors', + field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'), + ), + migrations.AddField( + model_name='find', + name='editors', + field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'), + ), + migrations.AddField( + model_name='property', + name='editors', + field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'), + ), + migrations.AddField( + model_name='statementcondition', + name='editors', + field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'), + ), + migrations.AddField( + model_name='treatment', + name='editors', + field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'), + ), + migrations.AddField( + model_name='treatmentfile', + name='editors', + field=models.ManyToManyField(blank=True, related_name='%(class)s_edited', to='ishtar_common.author', verbose_name='Editors'), + ), + migrations.AlterField( + model_name='find', + name='weight', + field=models.FloatField(blank=True, null=True, verbose_name='Weight (g)'), + ), + migrations.AlterField( + model_name='historicalfind', + name='weight', + field=models.FloatField(blank=True, null=True, verbose_name='Weight (g)'), + ), + migrations.AlterField( + model_name='statementcondition', + name='weight', + field=models.FloatField(blank=True, null=True, verbose_name='Weight (g)'), + ), + ] diff --git a/archaeological_finds/migrations/0150_findrelationtype_findrecordrelations.py b/archaeological_finds/migrations/0150_findrelationtype_findrecordrelations.py new file mode 100644 index 000000000..a7be6cc8b --- /dev/null +++ b/archaeological_finds/migrations/0150_findrelationtype_findrecordrelations.py @@ -0,0 +1,58 @@ +# Generated by Django 4.2.21 on 2026-04-06 18:14 + +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import ishtar_common.models_common +import re + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0277_data_migration_qualifiedbionotetype'), + ('archaeological_finds', '0149_add_editors'), + ] + + operations = [ + migrations.CreateModel( + name='FindRelationType', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('label', models.TextField(verbose_name='Label')), + ('txt_idx', models.TextField(help_text='The slug is the standardized version of the name. It contains only lowercase letters, numbers and hyphens. Each slug must be unique.', unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[-a-zA-Z0-9_]+\\Z'), 'Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.', 'invalid')], verbose_name='Textual ID')), + ('comment', models.TextField(blank=True, default='', verbose_name='Comment')), + ('available', models.BooleanField(default=True, verbose_name='Available')), + ('order', models.IntegerField(default=1, verbose_name='Order')), + ('symmetrical', models.BooleanField(verbose_name='Symmetrical')), + ('tiny_label', models.CharField(blank=True, max_length=50, null=True, verbose_name='Tiny label')), + ('logical_relation', models.CharField(blank=True, choices=[('above', 'Above'), ('below', 'Below'), ('equal', 'Equal'), ('include', 'Include'), ('included', 'Is included')], max_length=10, null=True, verbose_name='Logical relation')), + ('inverse_relation', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.findrelationtype', verbose_name='Inverse relation')), + ], + options={ + 'verbose_name': 'Find relation type', + 'verbose_name_plural': 'Find relation types', + 'ordering': ('order', 'label'), + }, + bases=(ishtar_common.models_common.Cached, models.Model), + ), + migrations.CreateModel( + name='FindRecordRelations', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('timestamp_geo', models.IntegerField(blank=True, null=True, verbose_name='Timestamp geo')), + ('timestamp_label', models.IntegerField(blank=True, null=True, verbose_name='Timestamp label')), + ('imports', models.ManyToManyField(blank=True, related_name='imported_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Created by imports')), + ('imports_updated', models.ManyToManyField(blank=True, related_name='import_updated_%(app_label)s_%(class)s', to='ishtar_common.import', verbose_name='Updated by imports')), + ('left_record', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='right_relations', to='archaeological_finds.find')), + ('relation_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='archaeological_finds.findrelationtype')), + ('right_record', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='left_relations', to='archaeological_finds.find')), + ], + options={ + 'verbose_name': 'Find record relation', + 'verbose_name_plural': 'Find record relations', + 'ordering': ('left_record__cached_label', 'relation_type', 'right_record__cached_label'), + 'permissions': [('view_findrelation', 'Can view all Find relations')], + }, + ), + ] diff --git a/archaeological_finds/migrations/0151_data_migration.json b/archaeological_finds/migrations/0151_data_migration.json new file mode 100644 index 000000000..58dd88c85 --- /dev/null +++ b/archaeological_finds/migrations/0151_data_migration.json @@ -0,0 +1,30 @@ +[ + { + "model": "archaeological_finds.findrelationtype", + "fields": { + "label": "Recolle avec", + "txt_idx": "recolle-avec", + "comment": "", + "available": true, + "order": 10, + "symmetrical": true, + "tiny_label": null, + "inverse_relation": null, + "logical_relation": null + } + }, + { + "model": "archaeological_finds.findrelationtype", + "fields": { + "label": "Voisin de", + "txt_idx": "voisin-de", + "comment": "", + "available": true, + "order": 10, + "symmetrical": true, + "tiny_label": null, + "inverse_relation": null, + "logical_relation": null + } + } +] diff --git a/archaeological_finds/migrations/0151_data_migration_find_relation_type.py b/archaeological_finds/migrations/0151_data_migration_find_relation_type.py new file mode 100644 index 000000000..f3a1c1b4e --- /dev/null +++ b/archaeological_finds/migrations/0151_data_migration_find_relation_type.py @@ -0,0 +1,24 @@ +# Generated by Django 2.2.24 on 2024-02-10 12:07 + +import os + +from django.db import migrations +from django.core.management import call_command + + +def load_data(apps, __): + FindRelationtypeType = apps.get_model("archaeological_finds", "findrelationtype") + if not FindRelationtypeType.objects.count(): + json_path = os.sep.join(os.path.abspath(__file__).split(os.sep)[:-1] + ["0151_data_migration.json"]) + call_command("loaddata", json_path) + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0150_findrelationtype_findrecordrelations'), + ] + + operations = [ + migrations.RunPython(load_data) + ] diff --git a/archaeological_finds/migrations/0152_find_actors_heritage_museum_fields.py b/archaeological_finds/migrations/0152_find_actors_heritage_museum_fields.py new file mode 100644 index 000000000..1d386c3ee --- /dev/null +++ b/archaeological_finds/migrations/0152_find_actors_heritage_museum_fields.py @@ -0,0 +1,154 @@ +# Generated by Django 4.2.21 on 2026-04-16 10:44 + +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import ishtar_common.models_common +import re + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0277_data_migration_qualifiedbionotetype'), + ('archaeological_finds', '0151_data_migration_find_relation_type'), + ] + + operations = [ + migrations.AddField( + model_name='find', + name='actors', + field=models.ManyToManyField(blank=True, related_name='finds', to='ishtar_common.qualifiedbiographicalnote', verbose_name='Actors'), + ), + migrations.AddField( + model_name='find', + name='conservatory_states_details', + field=models.TextField(blank=True, default='', verbose_name='Conservatory state details'), + ), + migrations.AddField( + model_name='find', + name='iconography_notes', + field=models.TextField(blank=True, default='', verbose_name='Notes on iconography'), + ), + migrations.AddField( + model_name='find', + name='listed_building_date', + field=models.DateField(blank=True, null=True, verbose_name='Date of listing as a listed building'), + ), + migrations.AddField( + model_name='find', + name='listed_building_id', + field=models.TextField(blank=True, default='', verbose_name='Listed building ID'), + ), + migrations.AddField( + model_name='find', + name='listed_building_notes', + field=models.TextField(blank=True, default='', verbose_name='Notes on listed building'), + ), + migrations.AddField( + model_name='find', + name='mark_text', + field=models.TextField(blank=True, default='', verbose_name='Mark text'), + ), + migrations.AddField( + model_name='find', + name='title', + field=models.TextField(blank=True, default='', verbose_name='Title'), + ), + migrations.AddField( + model_name='historicalfind', + name='conservatory_states_details', + field=models.TextField(blank=True, default='', verbose_name='Conservatory state details'), + ), + migrations.AddField( + model_name='historicalfind', + name='iconography_notes', + field=models.TextField(blank=True, default='', verbose_name='Notes on iconography'), + ), + migrations.AddField( + model_name='historicalfind', + name='listed_building_date', + field=models.DateField(blank=True, null=True, verbose_name='Date of listing as a listed building'), + ), + migrations.AddField( + model_name='historicalfind', + name='listed_building_id', + field=models.TextField(blank=True, default='', verbose_name='Listed building ID'), + ), + migrations.AddField( + model_name='historicalfind', + name='listed_building_notes', + field=models.TextField(blank=True, default='', verbose_name='Notes on listed building'), + ), + migrations.AddField( + model_name='historicalfind', + name='mark_text', + field=models.TextField(blank=True, default='', verbose_name='Mark text'), + ), + migrations.AddField( + model_name='historicalfind', + name='title', + field=models.TextField(blank=True, default='', verbose_name='Title'), + ), + migrations.AlterField( + model_name='find', + name='mark', + field=models.TextField(blank=True, default='', verbose_name='Marking details'), + ), + migrations.AlterField( + model_name='historicalfind', + name='mark', + field=models.TextField(blank=True, default='', verbose_name='Marking details'), + ), + migrations.CreateModel( + name='ListedBuildingProtectionNature', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('label', models.TextField(verbose_name='Label')), + ('txt_idx', models.TextField(help_text='The slug is the standardized version of the name. It contains only lowercase letters, numbers and hyphens. Each slug must be unique.', unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[-a-zA-Z0-9_]+\\Z'), 'Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.', 'invalid')], verbose_name='Textual ID')), + ('comment', models.TextField(blank=True, default='', verbose_name='Comment')), + ('available', models.BooleanField(default=True, verbose_name='Available')), + ('order', models.IntegerField(default=10, verbose_name='Order')), + ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.listedbuildingprotectionnature', verbose_name='Parent')), + ], + options={ + 'verbose_name': 'Listed building protection nature', + 'verbose_name_plural': 'Listed building protection nature', + 'ordering': ('order', 'label'), + }, + bases=(ishtar_common.models_common.Cached, models.Model), + ), + migrations.CreateModel( + name='IconographicPatternType', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('label', models.TextField(verbose_name='Label')), + ('txt_idx', models.TextField(help_text='The slug is the standardized version of the name. It contains only lowercase letters, numbers and hyphens. Each slug must be unique.', unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[-a-zA-Z0-9_]+\\Z'), 'Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.', 'invalid')], verbose_name='Textual ID')), + ('comment', models.TextField(blank=True, default='', verbose_name='Comment')), + ('available', models.BooleanField(default=True, verbose_name='Available')), + ('order', models.IntegerField(default=10, verbose_name='Order')), + ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.iconographicpatterntype', verbose_name='Parent')), + ], + options={ + 'verbose_name': 'Iconographic pattern type', + 'verbose_name_plural': 'Iconographic pattern types', + 'ordering': ('order', 'label'), + }, + bases=(ishtar_common.models_common.Cached, models.Model), + ), + migrations.AddField( + model_name='find', + name='iconographic_patterns', + field=models.ManyToManyField(blank=True, related_name='finds', to='archaeological_finds.iconographicpatterntype', verbose_name='Iconographic patterns'), + ), + migrations.AddField( + model_name='find', + name='listed_building_protection_nature', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='finds', to='archaeological_finds.listedbuildingprotectionnature', verbose_name='Nature of listed buildings protection'), + ), + migrations.AddField( + model_name='historicalfind', + name='listed_building_protection_nature', + field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.listedbuildingprotectionnature', verbose_name='Nature of listed buildings protection'), + ), + ] diff --git a/archaeological_finds/migrations/0153_data_migration.json b/archaeological_finds/migrations/0153_data_migration.json new file mode 100644 index 000000000..2391c6097 --- /dev/null +++ b/archaeological_finds/migrations/0153_data_migration.json @@ -0,0 +1,46 @@ +[ + { + "model": "archaeological_finds.listedbuildingprotectionnature", + "fields": { + "label": "Inscription au titre des monuments historiques", + "txt_idx": "inscription-au-titre-des-monuments-historiques", + "comment": "", + "available": true, + "order": 10, + "parent": null + } + }, + { + "model": "archaeological_finds.listedbuildingprotectionnature", + "fields": { + "label": "Classement au titre des monuments historiques", + "txt_idx": "classement-au-titre-des-monuments-historiques", + "comment": "", + "available": true, + "order": 20, + "parent": null + } + }, + { + "model": "archaeological_finds.iconographicpatterntype", + "fields": { + "label": "Motif iconographique 1", + "txt_idx": "motif-iconographique-1", + "comment": "", + "available": true, + "order": 10, + "parent": null + } + }, + { + "model": "archaeological_finds.iconographicpatterntype", + "fields": { + "label": "Motif iconographique 2", + "txt_idx": "motif-iconographique-2", + "comment": "", + "available": true, + "order": 20, + "parent": null + } + } +] diff --git a/archaeological_finds/migrations/0153_data_migration_find_listed_building_icono_patterns.py b/archaeological_finds/migrations/0153_data_migration_find_listed_building_icono_patterns.py new file mode 100644 index 000000000..571197971 --- /dev/null +++ b/archaeological_finds/migrations/0153_data_migration_find_listed_building_icono_patterns.py @@ -0,0 +1,24 @@ +# Generated by Django 2.2.24 on 2024-02-10 12:07 + +import os + +from django.db import migrations +from django.core.management import call_command + + +def load_data(apps, __): + IconographicPatternType = apps.get_model("archaeological_finds", "iconographicpatterntype") + if not IconographicPatternType.objects.count(): + json_path = os.sep.join(os.path.abspath(__file__).split(os.sep)[:-1] + ["0153_data_migration.json"]) + call_command("loaddata", json_path) + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0152_find_actors_heritage_museum_fields'), + ] + + operations = [ + migrations.RunPython(load_data) + ] |
