summaryrefslogtreecommitdiff
path: root/archaeological_finds/models_finds.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2022-05-18 16:24:26 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-12 12:20:59 +0100
commitc641fca2bc2bd5c6892b4105325dee99e9da35d6 (patch)
tree5f9012ed94ce2f854d9a349f7264447419cd99d3 /archaeological_finds/models_finds.py
parente39f05ef095d9b74853fa177d8ce2a566478dae2 (diff)
downloadIshtar-c641fca2bc2bd5c6892b4105325dee99e9da35d6.tar.bz2
Ishtar-c641fca2bc2bd5c6892b4105325dee99e9da35d6.zip
Syndication - serialization - display sheet find - 2
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r--archaeological_finds/models_finds.py47
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: