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: | 
