summaryrefslogtreecommitdiff
path: root/archaeological_operations/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-03-27 12:14:54 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-03-27 12:19:15 +0100
commit41de8783a4307a305a09ae522db9cec53f4b43ca (patch)
treed5e6ebc45d41f9729e2604a44a5eae09ceae6430 /archaeological_operations/models.py
parente0e01265db6b6558d520b8c12a841f62e7f2b2c3 (diff)
downloadIshtar-41de8783a4307a305a09ae522db9cec53f4b43ca.tar.bz2
Ishtar-41de8783a4307a305a09ae522db9cec53f4b43ca.zip
🗃️ sites - models: add dating
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r--archaeological_operations/models.py40
1 files changed, 34 insertions, 6 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 9d9e227b0..c6706c7dc 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -36,11 +36,15 @@ from django.db.models.signals import m2m_changed, post_save, post_delete, pre_de
from django.forms import ValidationError
from django.urls import reverse, reverse_lazy
from ishtar_common.data_importer import post_importer_action
-from ishtar_common.utils import gettext_lazy as _, pgettext_lazy, get_generated_id
+from ishtar_common.utils import (
+ gettext_lazy as _, pgettext_lazy, get_generated_id,
+ related_historization_changed
+)
from ishtar_common.models import (
Area,
Author,
+ BaseDating,
BaseHistorizedItem,
DashboardFormItem,
Document,
@@ -613,8 +617,10 @@ class ArchaeologicalSite(
RELATIVE_SESSION_NAMES = [
("operation", "operations__pk"),
]
- HISTORICAL_M2M = ["periods", "remains", "towns", "cultural_attributions", "types",
- "heritage_interests", "heritage_environmental_protections"]
+ HISTORICAL_M2M = [
+ "datings", "periods", "remains", "towns", "cultural_attributions", "types",
+ "heritage_interests", "heritage_environmental_protections"
+ ]
CACHED_LABELS = [
"cached_label",
"cached_towns_label",
@@ -1149,11 +1155,33 @@ m2m_changed.connect(geodata_attached_changed, sender=ArchaeologicalSite.geodata.
m2m_changed.connect(geotown_attached_changed, sender=ArchaeologicalSite.towns.through)
-for attr in ArchaeologicalSite.HISTORICAL_M2M:
- m2m_changed.connect(
- m2m_historization_changed, sender=getattr(ArchaeologicalSite, attr).through
+class SiteDating(BaseDating):
+ SERIALIZE_EXCLUDE = ["site"]
+ CURRENT_MODEL = ArchaeologicalSite
+ CURRENT_MODEL_ATTR = "site"
+
+ site = models.ForeignKey(
+ ArchaeologicalSite,
+ verbose_name=_("Site"),
+ related_name="datings",
+ on_delete=models.CASCADE,
)
+ class Meta:
+ verbose_name = _("Site dating")
+ verbose_name_plural = _("Site datings")
+
+
+for attr in ArchaeologicalSite.HISTORICAL_M2M:
+ if attr == "datings":
+ model = SiteDating
+ post_save.connect(related_historization_changed, sender=SiteDating)
+ post_delete.connect(related_historization_changed, sender=SiteDating)
+ else:
+ m2m_changed.connect(
+ m2m_historization_changed, sender=getattr(ArchaeologicalSite, attr).through
+ )
+
def get_values_town_related(item, prefix, values, filtr=None):
if not filtr or prefix + "parcellist" in filtr: