diff options
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r-- | archaeological_finds/models_finds.py | 75 |
1 files changed, 61 insertions, 14 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 89bbf245f..d3b1934e1 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -427,6 +427,7 @@ class DiscoveryMethod(OrderedHierarchicalType): ) ADMIN_SECTION = _("Finds") + post_save.connect(post_save_cache, sender=DiscoveryMethod) post_delete.connect(post_save_cache, sender=DiscoveryMethod) @@ -507,6 +508,38 @@ post_save.connect(post_save_cache, sender=InventoryConformity) post_delete.connect(post_save_cache, sender=InventoryConformity) +class OwnerType(OrderedHierarchicalType): + class Meta: + verbose_name = _("Owner type") + verbose_name_plural = _("Owner types") + ordering = ( + "order", + "parent__label", + "label", + ) + ADMIN_SECTION = _("Finds") + + +post_save.connect(post_save_cache, sender=OwnerType) +post_delete.connect(post_save_cache, sender=OwnerType) + + +class OwnershipStatus(OrderedHierarchicalType): + class Meta: + verbose_name = _("Ownership status") + verbose_name_plural = _("Ownership status") + ordering = ( + "order", + "parent__label", + "label", + ) + ADMIN_SECTION = _("Finds") + + +post_save.connect(post_save_cache, sender=OwnershipStatus) +post_delete.connect(post_save_cache, sender=OwnershipStatus) + + class OriginalReproduction(OrderedType): class Meta: verbose_name = _("Original/reproduction type") @@ -1677,6 +1710,14 @@ class Find( pgettext_lazy("key for text search", "appraisal-date"), "appraisal_date", ), + "owner": SearchAltName( + pgettext_lazy("key for text search", "owner"), + "owner__label__iexact", + ), + "ownership_status": SearchAltName( + pgettext_lazy("key for text search", "ownership"), + "ownership_status__label__iexact", + ), "cultural_attributions": SearchAltName( pgettext_lazy("key for text search", "cultural-attribution"), "cultural_attributions__label__iexact", @@ -1777,10 +1818,10 @@ class Find( pgettext_lazy("key for text search", "museum-marking-type"), "museum_marking_type__label__iexact" ), - "museum_collection": SearchAltName( - pgettext_lazy("key for text search", "museum-collection"), - "museum_collection__label__iexact", - related_name="museum_collection" + "museum_collections": SearchAltName( + pgettext_lazy("key for text search", "museum-collections"), + "museum_collections__label__iexact", + related_name="museum_collections" ), "museum_former_collections": SearchAltName( pgettext_lazy("key for text search", "museum-former-collection"), @@ -1884,7 +1925,7 @@ class Find( SearchVectorConfig("museum_entry_mode_comment"), SearchVectorConfig("museum_entry_date_comment", "local"), SearchVectorConfig("museum_donors__denomination"), - SearchVectorConfig("museum_collection__label"), + SearchVectorConfig("museum_collections__label"), SearchVectorConfig("museum_former_collections__denomination"), SearchVectorConfig("museum_inventory_transcript", "local"), ] @@ -2243,11 +2284,13 @@ class Find( ) check_date = models.DateField(_("Check date"), default=datetime.date.today) estimated_value = models.FloatField(_("Estimated value"), blank=True, null=True) - collection = models.ForeignKey( - "archaeological_warehouse.Warehouse", blank=True, null=True, on_delete=models.SET_NULL, - related_name="finds", - verbose_name=_("Collection"), - help_text=_("Do not use - need evolutions"), + ownership_status = models.ForeignKey( + OwnershipStatus, blank=True, null=True, on_delete=models.SET_NULL, + verbose_name=_("Ownership status"), + ) + owner = models.ForeignKey( + OwnerType, blank=True, null=True, on_delete=models.SET_NULL, + verbose_name=_("Owner"), ) # museum module museum_owner_institution = models.ForeignKey( @@ -2290,10 +2333,10 @@ class Find( blank=True, related_name="finds", ) - museum_collection = models.ForeignKey( - MuseumCollection, blank=True, null=True, on_delete=models.SET_NULL, - related_name='current_collection_of', - verbose_name=_("Collection"), + museum_collections = models.ManyToManyField( + MuseumCollection, + blank=True, + verbose_name=_("Collections"), ) museum_former_collections = models.ManyToManyField( BiographicalNote, blank=True, @@ -2463,6 +2506,10 @@ class Find( return False @property + def has_ownership_section(self): + return self.owner or self.ownership_status + + @property def museum_entry_date_label(self): from django.utils.formats import date_format if not self.museum_entry_date: |