summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-05-22 17:40:11 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-05-22 17:40:11 +0200
commit3750e45bc8c7c3d6ab4c709f05415113c1d434c3 (patch)
treed4f58511bd59a44fb48c07e7644a736e22fa7f64
parentd7f357e956e9e3695832bb470b952b3c5e78b6cb (diff)
downloadIshtar-3750e45bc8c7c3d6ab4c709f05415113c1d434c3.tar.bz2
Ishtar-3750e45bc8c7c3d6ab4c709f05415113c1d434c3.zip
Document template: manage associated documents
-rw-r--r--ishtar_common/models.py37
1 files changed, 36 insertions, 1 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 205935f7b..7a10c3e9d 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -115,6 +115,18 @@ class ValueGetter(object):
'search_vector', 'id', 'multi_polygon', 'point_2d', 'point',
'history_m2m']
+ def _get_values_documents(self, prefix=""):
+ values = {}
+ if not hasattr(self, 'documents'):
+ return values
+ values[prefix + "documents"] = [
+ doc.get_values(prefix=prefix) for doc in self.documents.all()
+ ]
+ if hasattr(self, "main_image") and self.main_image and hasattr(
+ self.main_image, "get_values"):
+ values[prefix + "main_image"] = self.main_image.get_values()
+ return values
+
def get_values(self, prefix=''):
if not prefix:
prefix = self._prefix
@@ -128,6 +140,7 @@ class ValueGetter(object):
values.update(value.get_values(prefix + field_name + '_'))
else:
values[prefix + field_name] = value
+ values.update(self._get_values_documents(prefix=prefix))
for extra_field in self.GET_VALUES_EXTRA:
values[prefix + extra_field] = getattr(self, extra_field) or ''
for key in values.keys():
@@ -4368,7 +4381,7 @@ post_save.connect(post_save_cache, sender=LicenseType)
post_delete.connect(post_save_cache, sender=LicenseType)
-class Document(BaseHistorizedItem, OwnPerms, ImageModel):
+class Document(BaseHistorizedItem, OwnPerms, ImageModel, ValueGetter):
EXTERNAL_ID_KEY = 'document_external_id'
# order is important: put the image in the first match found
# other will be symbolic links
@@ -4384,6 +4397,17 @@ class Document(BaseHistorizedItem, OwnPerms, ImageModel):
SLUG = 'document'
LINK_SPLIT = u"<||>"
+ GET_VALUE_EXCLUDE_FIELDS = ValueGetter.GET_VALUE_EXCLUDE_FIELDS + [
+ "warehouses", "operations", "treatments",
+ "files", "treatment_files", "id",
+ "associated_links", "source_type_id",
+ "history_creator_id", "containers", "sites",
+ "main_image_warehouses", "main_image_operations", "main_image_treatments",
+ "main_image_files", "main_image_treatment_files", "main_image_id",
+ "main_image_associated_links", "main_image_source_type_id",
+ "main_image_history_creator_id", "main_image_containers", "main_image_sites",
+ ]
+
TABLE_COLS = ['title', 'source_type', 'cache_related_label',
'authors__cached_label',
'associated_url']
@@ -4600,6 +4624,17 @@ class Document(BaseHistorizedItem, OwnPerms, ImageModel):
"""
@property
+ def image_path(self):
+ if not self.image:
+ return ""
+ return self.image.path
+
+ def get_values(self, prefix=""):
+ values = super(Document, self).get_values(prefix=prefix)
+ values[prefix + "image_path"] = self.image_path
+ return values
+
+ @property
def images_without_main_image(self):
return []