diff options
| -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 %} | 
