summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds')
-rw-r--r--archaeological_finds/admin.py2
-rw-r--r--archaeological_finds/migrations/0129_discovery_method.py50
-rw-r--r--archaeological_finds/migrations/0130_data_discovery_method.json35
-rw-r--r--archaeological_finds/migrations/0130_data_discovery_method.py23
-rw-r--r--archaeological_finds/models.py2
-rw-r--r--archaeological_finds/models_finds.py20
6 files changed, 129 insertions, 3 deletions
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"),