diff options
| 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 |
| commit | 41de8783a4307a305a09ae522db9cec53f4b43ca (patch) | |
| tree | d5e6ebc45d41f9729e2604a44a5eae09ceae6430 /archaeological_operations/models.py | |
| parent | e0e01265db6b6558d520b8c12a841f62e7f2b2c3 (diff) | |
| download | Ishtar-41de8783a4307a305a09ae522db9cec53f4b43ca.tar.bz2 Ishtar-41de8783a4307a305a09ae522db9cec53f4b43ca.zip | |
🗃️ sites - models: add dating
Diffstat (limited to 'archaeological_operations/models.py')
| -rw-r--r-- | archaeological_operations/models.py | 40 |
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: |
