diff options
Diffstat (limited to 'archaeological_finds/models_treatments.py')
-rw-r--r-- | archaeological_finds/models_treatments.py | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 9a9455ea1..933df0fa8 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -1454,3 +1454,101 @@ class TreatmentFile( m2m_changed.connect(document_attached_changed, sender=TreatmentFile.documents.through) post_save.connect(cached_label_changed, sender=TreatmentFile) + + +class ExhibitionType(GeneralType): + class Meta: + verbose_name = _("Exhibition type") + verbose_name_plural = _("Exhibition types") + ordering = ("label",) + ADMIN_SECTION = _("Treatments") + + +class Exhibition( + DocumentItem, + BaseHistorizedItem, + CompleteIdentifierItem, + OwnPerms, + ValueGetter, + MainItem, + AssociatedFindBasket, +): + SLUG = "exhibition" + APP = "archaeological_finds" + MODEL = SLUG + SHOW_URL = "show-exhibition" + DELETE_URL = "delete-exhibition" + TABLE_COLS = ["year", "reference", "name"] + BASE_SEARCH_VECTORS = [ + SearchVectorConfig("exhibition_type__label"), + SearchVectorConfig("reference"), + SearchVectorConfig("name"), + SearchVectorConfig("comment", "local"), + ] + name = models.TextField(_("Name")) + exhibition_type = models.ForeignKey( + ExhibitionType, + verbose_name=_("Exhibition type"), + on_delete=models.PROTECT, + ) + year = models.IntegerField(_("Year"), default=get_current_year) + reference = models.TextField( + _("Reference"), blank=True, null=True, default="-" + ) + in_charge = models.ForeignKey( + Person, + related_name="exhibitions", + verbose_name=_("Person in charge"), + on_delete=models.SET_NULL, + blank=True, + null=True, + ) + # prevent circular imports... + associated_basket_id = models.PositiveIntegerField( + verbose_name=_("Basket ID"), blank=True, null=True, + help_text=_("Reference basket") + ) + comment = models.TextField(_("Comment"), blank=True, default="") + treatment_files = models.ManyToManyField( + TreatmentFile, + related_name="exhibitions", + verbose_name=_("Loans"), + blank=True, + ) + documents = models.ManyToManyField( + Document, + related_name="exhibitions", + verbose_name=_("Documents"), + blank=True, + ) + main_image = models.ForeignKey( + Document, + related_name="main_image_exhibitions", + on_delete=models.SET_NULL, + verbose_name=_("Main image"), + blank=True, + null=True, + ) + timestamp_geo = None + timestamp_label = None + complete_identifier = None + custom_index = None + need_update = None + cached_label = None + history = HistoricalRecords() + + class Meta: + verbose_name = _("Exhibition") + verbose_name_plural = _("Exhibitions") + unique_together = ("year", "name") + permissions = ( + ("view_own_exhibition", "Can view own Exhibition"), + ("change_own_exhibition", "Can change own Exhibition"), + ("delete_own_exhibition", "Can delete own Exhibition"), + ) + ordering = ("year", "name") + indexes = [ + GinIndex(fields=["data"]), + ] + ADMIN_SECTION = _("Treatments") + |