diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-09-20 11:52:46 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-09-20 15:47:14 +0200 |
commit | 2089f69b8958ba08879a706d478397e927de8741 (patch) | |
tree | b3f0047a4d78e10e9bcff258e1f7cbe1e9a44372 | |
parent | 14b2433f8b04d11c2c3ad721997289ffa0777de3 (diff) | |
download | Ishtar-2089f69b8958ba08879a706d478397e927de8741.tar.bz2 Ishtar-2089f69b8958ba08879a706d478397e927de8741.zip |
🗃️ context records, finds: new fields in database
Context record:
- excavator
Find:
- discovery method
-rw-r--r-- | Makefile.example | 1 | ||||
-rw-r--r-- | archaeological_context_records/migrations/0120_excavator.py | 35 | ||||
-rw-r--r-- | archaeological_context_records/models.py | 7 | ||||
-rw-r--r-- | archaeological_finds/admin.py | 2 | ||||
-rw-r--r-- | archaeological_finds/migrations/0129_discovery_method.py | 50 | ||||
-rw-r--r-- | archaeological_finds/migrations/0130_data_discovery_method.json | 35 | ||||
-rw-r--r-- | archaeological_finds/migrations/0130_data_discovery_method.py | 23 | ||||
-rw-r--r-- | archaeological_finds/models.py | 2 | ||||
-rw-r--r-- | archaeological_finds/models_finds.py | 20 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/sheet_person.html | 5 |
10 files changed, 176 insertions, 4 deletions
diff --git a/Makefile.example b/Makefile.example index 3a5bf220b..34b0f2c10 100644 --- a/Makefile.example +++ b/Makefile.example @@ -328,6 +328,7 @@ fixtures_finds: archaeological_finds.inventorymarkingpresence \ archaeological_finds.communicabilitytype \ archaeological_finds.functionalarea \ + archaeological_finds.discoverymethod \ > '../archaeological_finds/fixtures/initial_data-'$(default_data)'.json' fixtures_warehouse: diff --git a/archaeological_context_records/migrations/0120_excavator.py b/archaeological_context_records/migrations/0120_excavator.py new file mode 100644 index 000000000..e5a88cd6f --- /dev/null +++ b/archaeological_context_records/migrations/0120_excavator.py @@ -0,0 +1,35 @@ +# Generated by Django 2.2.24 on 2024-09-20 11:05 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0249_town_notice'), + ('archaeological_context_records', '0119_default_typos'), + ] + + operations = [ + migrations.AddField( + model_name='contextrecord', + name='excavator', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='context_record_excavation', to='ishtar_common.Person', verbose_name='Excavator'), + ), + migrations.AddField( + model_name='historicalcontextrecord', + name='excavator', + 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='Excavator'), + ), + migrations.AlterField( + model_name='contextrecord', + name='surface', + field=models.FloatField(blank=True, null=True, verbose_name='Surface (m²)'), + ), + migrations.AlterField( + model_name='historicalcontextrecord', + name='surface', + field=models.FloatField(blank=True, null=True, verbose_name='Surface (m²)'), + ), + ] diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index a10c78552..c1a03e79e 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -42,6 +42,7 @@ from ishtar_common.utils import ( from ishtar_common.models import ( Document, + Person, GeneralType, BaseHistorizedItem, OwnPerms, @@ -847,6 +848,10 @@ class ContextRecord( label = models.CharField(_("ID"), max_length=200) description = models.TextField(_("Description"), blank=True, default="") comment = models.TextField(_("General comment"), blank=True, default="") + excavator = models.ForeignKey( + Person, verbose_name=_("Excavator"), on_delete=models.SET_NULL, + blank=True, null=True, related_name="context_record_excavation" + ) opening_date = models.DateField(_("Opening date"), blank=True, null=True) closing_date = models.DateField(_("Closing date"), blank=True, null=True) length = models.FloatField(_("Length (m)"), blank=True, null=True) @@ -859,7 +864,7 @@ class ContextRecord( depth_of_appearance = models.FloatField( _("Depth of appearance (m)"), blank=True, null=True ) - surface = models.FloatField(_("Surface (m2)"), blank=True, null=True) + surface = models.FloatField(_("Surface (m²)"), blank=True, null=True) location = models.TextField( _("Location"), blank=True, diff --git a/archaeological_finds/admin.py b/archaeological_finds/admin.py index b089e0713..b616b3dc7 100644 --- a/archaeological_finds/admin.py +++ b/archaeological_finds/admin.py @@ -242,7 +242,7 @@ general_models = [ models.CollectionEntryModeType, models.IntegrityType, models.InventoryConformity, models.InventoryMarkingPresence, models.MarkingType, models.MaterialTypeQualityType, models.MuseumCollection, models.ObjectTypeQualityType, models.OriginalReproduction, - models.RemarkabilityType, models.TreatmentEmergencyType, + models.RemarkabilityType, models.TreatmentEmergencyType, models.DiscoveryMethod, ] for model in general_models: diff --git a/archaeological_finds/migrations/0129_discovery_method.py b/archaeological_finds/migrations/0129_discovery_method.py new file mode 100644 index 000000000..94af962af --- /dev/null +++ b/archaeological_finds/migrations/0129_discovery_method.py @@ -0,0 +1,50 @@ +# Generated by Django 2.2.24 on 2024-09-20 12:38 + +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 = [ + ('archaeological_finds', '0128_find_first_full_location'), + ] + + operations = [ + migrations.AlterField( + model_name='findtreatment', + name='location_type', + field=models.CharField(choices=[['C', 'Current'], ['R', 'Reference'], ['B', 'Reference/current']], default='C', max_length=1, verbose_name='Location type'), + ), + migrations.CreateModel( + name='DiscoveryMethod', + 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.DiscoveryMethod', verbose_name='Parent')), + ], + options={ + 'verbose_name': 'Discovery method type', + 'verbose_name_plural': 'Discovery method types', + 'ordering': ('order', 'label'), + }, + bases=(ishtar_common.models_common.Cached, models.Model), + ), + migrations.AddField( + model_name='basefind', + name='discovery_method', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_finds.DiscoveryMethod', verbose_name='Discovery method'), + ), + migrations.AddField( + model_name='historicalbasefind', + name='discovery_method', + field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.DiscoveryMethod', verbose_name='Discovery method'), + ), + ] diff --git a/archaeological_finds/migrations/0130_data_discovery_method.json b/archaeological_finds/migrations/0130_data_discovery_method.json new file mode 100644 index 000000000..8d7994f5a --- /dev/null +++ b/archaeological_finds/migrations/0130_data_discovery_method.json @@ -0,0 +1,35 @@ +[ +{ + "model": "archaeological_finds.discoverymethod", + "fields": { + "label": "Fouille", + "txt_idx": "fouille", + "comment": "", + "available": true, + "order": 10, + "parent": null + } +}, +{ + "model": "archaeological_finds.discoverymethod", + "fields": { + "label": "Tamisage", + "txt_idx": "tamisage", + "comment": "", + "available": true, + "order": 20, + "parent": null + } +}, +{ + "model": "archaeological_finds.discoverymethod", + "fields": { + "label": "Flottation", + "txt_idx": "flottation", + "comment": "", + "available": true, + "order": 30, + "parent": null + } +} +] diff --git a/archaeological_finds/migrations/0130_data_discovery_method.py b/archaeological_finds/migrations/0130_data_discovery_method.py new file mode 100644 index 000000000..56a1efb1f --- /dev/null +++ b/archaeological_finds/migrations/0130_data_discovery_method.py @@ -0,0 +1,23 @@ +import os + +from django.db import migrations +from django.core.management import call_command + + +def load_data(apps, __): + DiscoveryMethod = apps.get_model("archaeological_finds", "discoverymethod") + if not DiscoveryMethod.objects.count(): + migration = "0130_data_discovery_method.json" + json_path = os.sep.join(os.path.abspath(__file__).split(os.sep)[:-1] + [migration]) + call_command("loaddata", json_path) + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0129_discovery_method'), + ] + + operations = [ + migrations.RunPython(load_data) + ] diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py index ede0ff2ba..ce2098d8d 100644 --- a/archaeological_finds/models.py +++ b/archaeological_finds/models.py @@ -8,6 +8,7 @@ from archaeological_finds.models_finds import ( CollectionEntryModeType, CommunicabilityType, ConservatoryState, + DiscoveryMethod, FBulkView, Find, FindBasket, @@ -55,6 +56,7 @@ __all__ = [ "CollectionEntryModeType", "CommunicabilityType", "ConservatoryState", + "DiscoveryMethod", "FBulkView", "Find", "FirstBaseFindView", diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 7da45166e..42b1aa514 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -416,6 +416,20 @@ post_save.connect(post_save_cache, sender=CheckedType) post_delete.connect(post_save_cache, sender=CheckedType) +class DiscoveryMethod(OrderedHierarchicalType): + class Meta: + verbose_name = _("Discovery method type") + verbose_name_plural = _("Discovery method types") + ordering = ( + "order", + "label", + ) + ADMIN_SECTION = _("Finds") + +post_save.connect(post_save_cache, sender=DiscoveryMethod) +post_delete.connect(post_save_cache, sender=DiscoveryMethod) + + class CollectionEntryModeType(OrderedHierarchicalType): class Meta: verbose_name = _("Collection entry mode type") @@ -507,8 +521,6 @@ post_save.connect(post_save_cache, sender=OriginalReproduction) post_delete.connect(post_save_cache, sender=OriginalReproduction) - - class BFBulkView(object): CREATE_SQL = """ CREATE VIEW basefind_cached_bulk_update @@ -568,6 +580,10 @@ class BaseFind( discovery_date_taq = models.DateField( _("Discovery date (end)"), blank=True, null=True ) + discovery_method = models.ForeignKey( + DiscoveryMethod, blank=True, null=True, + on_delete=models.SET_NULL, verbose_name=_("Discovery method") + ) batch = models.ForeignKey( BatchType, verbose_name=_("Batch/object"), diff --git a/ishtar_common/templates/ishtar/sheet_person.html b/ishtar_common/templates/ishtar/sheet_person.html index 7c3093df8..5856e4407 100644 --- a/ishtar_common/templates/ishtar/sheet_person.html +++ b/ishtar_common/templates/ishtar/sheet_person.html @@ -125,6 +125,11 @@ {% dynamic_table_document af 'files' 'responsible_town_planning_service__pk' item.pk '' output %} {% endif %} +{% trans "Associated context records as excavator" as excavator %} +{% if item.context_record_excavation.count %} +{% dynamic_table_document excavator 'context_records' 'excavator_id' item.pk '' output %} +{% endif %} + {% comment %} to be tested......... {% trans "In charge of administrative acts" as admin_act %} {% if item.adminact_operation_in_charge.count %} |