summaryrefslogtreecommitdiff
path: root/archaeological_operations/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r--archaeological_operations/models.py96
1 files changed, 90 insertions, 6 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index d17e529a7..f4c12beb0 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -49,6 +49,8 @@ from ishtar_common.models import (
IshtarUser,
LightHistorizedItem,
OperationType,
+ OrderedHierarchicalType,
+ OrderedType,
Organization,
OwnPerms,
Person,
@@ -134,9 +136,48 @@ post_save.connect(post_save_cache, sender=ReportState)
post_delete.connect(post_save_cache, sender=ReportState)
-class SiteManager(models.Manager):
- def get_by_natural_key(self, txt_idx):
- return self.get(reference=txt_idx)
+class SiteCurrentStatusType(OrderedType):
+ class Meta:
+ verbose_name = _("Current status type")
+ verbose_name_plural = _("Current status types")
+ ordering = ("order", "label")
+
+
+post_save.connect(post_save_cache, sender=SiteCurrentStatusType)
+post_delete.connect(post_save_cache, sender=SiteCurrentStatusType)
+
+
+class SiteDiscoveryStatusType(OrderedType):
+ class Meta:
+ verbose_name = _("Discovery status type")
+ verbose_name_plural = _("Discovery status types")
+ ordering = ("order", "label")
+
+
+post_save.connect(post_save_cache, sender=SiteDiscoveryStatusType)
+post_delete.connect(post_save_cache, sender=SiteDiscoveryStatusType)
+
+
+class NatureOfSiteType(OrderedType):
+ class Meta:
+ verbose_name = _("Nature of site type")
+ verbose_name_plural = _("Nature of site types")
+ ordering = ("order", "label")
+
+
+post_save.connect(post_save_cache, sender=NatureOfSiteType)
+post_delete.connect(post_save_cache, sender=NatureOfSiteType)
+
+
+class InterpretationLevelType(OrderedType):
+ class Meta:
+ verbose_name = _("Interpretation level type")
+ verbose_name_plural = _("Interpretation level types")
+ ordering = ("order", "label")
+
+
+post_save.connect(post_save_cache, sender=InterpretationLevelType)
+post_delete.connect(post_save_cache, sender=InterpretationLevelType)
class RecordQualityType(GeneralType):
@@ -148,6 +189,10 @@ class RecordQualityType(GeneralType):
ordering = ("order", "label")
+post_save.connect(post_save_cache, sender=RecordQualityType)
+post_delete.connect(post_save_cache, sender=RecordQualityType)
+
+
class CulturalAttributionType(HierarchicalType):
order = models.IntegerField(_("Order"), default=10)
@@ -157,8 +202,19 @@ class CulturalAttributionType(HierarchicalType):
ordering = ("order", "label")
-post_save.connect(post_save_cache, sender=RecordQualityType)
-post_delete.connect(post_save_cache, sender=RecordQualityType)
+post_save.connect(post_save_cache, sender=CulturalAttributionType)
+post_delete.connect(post_save_cache, sender=CulturalAttributionType)
+
+
+class SiteType(OrderedHierarchicalType):
+ class Meta:
+ verbose_name = _("Site type")
+ verbose_name_plural = _("Site types")
+ ordering = ("order", "label")
+
+
+post_save.connect(post_save_cache, sender=SiteType)
+post_delete.connect(post_save_cache, sender=SiteType)
class GeographicTownItem(GeoItem):
@@ -278,6 +334,11 @@ class GeographicTownItem(GeoItem):
return changed
+class SiteManager(models.Manager):
+ def get_by_natural_key(self, txt_idx):
+ return self.get(reference=txt_idx)
+
+
class ArchaeologicalSite(
DocumentItem,
BaseHistorizedItem,
@@ -321,6 +382,8 @@ class ArchaeologicalSite(
BASE_SEARCH_VECTORS = [
SearchVectorConfig("comment", "local"),
+ SearchVectorConfig("description", "local"),
+ SearchVectorConfig("precise_description", "local"),
SearchVectorConfig("discovery_area", "local"),
SearchVectorConfig("locality_cadastral", "local"),
SearchVectorConfig("locality_ngi", "local"),
@@ -336,6 +399,7 @@ class ArchaeologicalSite(
M2M_SEARCH_VECTORS = [
SearchVectorConfig("periods__label", "local"),
SearchVectorConfig("remains__label", "local"),
+ SearchVectorConfig("types__label", "local"),
SearchVectorConfig("towns__name"),
SearchVectorConfig("towns__numero_insee", "raw"),
]
@@ -452,7 +516,7 @@ class ArchaeologicalSite(
RELATIVE_SESSION_NAMES = [
("operation", "operations__pk"),
]
- HISTORICAL_M2M = ["periods", "remains", "towns", "cultural_attributions"]
+ HISTORICAL_M2M = ["periods", "remains", "towns", "cultural_attributions", "types"]
CACHED_LABELS = [
"cached_label",
"cached_towns_label",
@@ -500,6 +564,7 @@ class ArchaeologicalSite(
reference = models.CharField(_("Reference"), max_length=200, unique=True)
other_reference = models.TextField(_("Other reference"), blank=True, default="")
name = models.CharField(_("Name"), max_length=200, null=True, blank=True)
+ types = models.ManyToManyField("SiteType", verbose_name=_("Types"), blank=True)
periods = models.ManyToManyField(Period, verbose_name=_("Periods"), blank=True)
remains = models.ManyToManyField(
"RemainType", verbose_name=_("Remains"), blank=True
@@ -510,7 +575,26 @@ class ArchaeologicalSite(
towns = models.ManyToManyField(
Town, verbose_name=_("Towns"), related_name="sites", blank=True
)
+ current_status = models.ForeignKey(
+ SiteCurrentStatusType, verbose_name=_("Current status"),
+ on_delete=models.SET_NULL, blank=True, null=True
+ )
+ discovery_status = models.ForeignKey(
+ SiteDiscoveryStatusType, verbose_name=_("Discovery status"),
+ on_delete=models.SET_NULL, blank=True, null=True
+ )
+ discoverer = models.ForeignKey(Person, verbose_name=_("Discoverer"), on_delete=models.SET_NULL,
+ blank=True, null=True)
+ nature_of_site = models.ForeignKey(NatureOfSiteType, verbose_name=_("Nature of site"),
+ on_delete=models.SET_NULL, blank=True, null=True)
+ interpretation_level = models.ForeignKey(
+ InterpretationLevelType, verbose_name=_("Interpretation level"),
+ on_delete=models.SET_NULL, blank=True, null=True
+ )
comment = models.TextField(_("Comment"), blank=True, default="")
+ description = models.TextField(_("Description"), blank=True, default="")
+ public_description = models.TextField(_("Public description"), blank=True, default="")
+ precise_locality = models.TextField(_("Precise locality"), blank=True, default="")
locality_ngi = models.TextField(
_("National Geographic Institute locality"), blank=True, default=""
)