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=""      )  | 
