diff options
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r-- | archaeological_operations/models.py | 96 |
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="" ) |