diff options
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r-- | archaeological_finds/models_finds.py | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 6ccf6c990..583ee405a 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -395,6 +395,9 @@ class BaseFind( EXTERNAL_ID_KEY = "base_find_external_id" EXTERNAL_ID_DEPENDENCIES = ["find"] SLUG = "basefind" + SERIALIZE_EXCLUDE = ["find"] + SERIALIZE_CALL = {"complete_id": "complete_id", "short_id": "short_id"} + uuid = models.UUIDField(default=uuid.uuid4) label = models.TextField(_("Free ID")) external_id = models.TextField(_("External ID"), blank=True, default="") @@ -1759,9 +1762,20 @@ class Find( "cached_object_types", "cached_materials", ] - SERIALIZE_PROPERTIES = ["external_id"] - SERIALIZE_CALL = {"base_finds_list": "base_finds_list", - "documents_list": "documents_list"} + SERIALIZE_CALL = { + "base_finds_list": "base_finds_list", + "documents_list": "documents_list", + "m2m_listing_datings": "m2m_listing_datings", + } + SERIALIZE_PROPERTIES = MainItem.SERIALIZE_PROPERTIES + [ + "administrative_index", + "integrities_count", + "remarkabilities_count", + "cultural_attributions_count", + "documents_count", + "excavation_ids", + "weight_string", + ] objects = UUIDModelManager() # fields @@ -2161,6 +2175,9 @@ class Find( lst.append(bf.full_serialize()) return lst + def m2m_listing_datings(self) -> list: + return [dating.full_serialize() for dating in self.datings.all()] + DOC_VALUES = [ ("base_finds", _("List of associated base finds")), ("material_types_label", _("Material types string")), @@ -2209,7 +2226,8 @@ class Find( q = q.exclude(**{k: v}) for recommendation in q.values_list( - "parent__" * level + "recommendation", flat=True): + "parent__" * level + "recommendation", flat=True + ): recommendations.add(recommendation) return ", ".join(sorted(recommendations)) @@ -2225,8 +2243,9 @@ class Find( if not filtr or prefix + "material_types_code" in filtr: values[prefix + "material_types_code"] = self.get_material_types_code() if not filtr or prefix + "material_types_recommendations" in filtr: - values[prefix + "material_types_recommendations"] = \ - self.get_material_types_recommendations() + values[ + prefix + "material_types_recommendations" + ] = self.get_material_types_recommendations() if no_base_finds: return values # by default attach first basefind data @@ -2337,6 +2356,22 @@ class Find( return "{}-{}".format(bf.context_record.operation.get_reference(), self.index) @property + def integrities_count(self): + return self.integrities.count() + + @property + def remarkabilities_count(self): + return self.remarkabilities.count() + + @property + def cultural_attributions_count(self): + return self.cultural_attributions.count() + + @property + def documents_count(self): + return self.documents.count() + + @property def operation(self): bf = self.get_first_base_find() if not bf or not bf.context_record or not bf.context_record.operation: |