summaryrefslogtreecommitdiff
path: root/ishtar_common/models_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-11-06 00:22:56 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-12 12:20:59 +0100
commit905dfbb0ebb91af7b7acaae256306f178863c57f (patch)
treef9a0ceb1b16a84c1ae4cb56a32115409c092bf73 /ishtar_common/models_common.py
parentdfb5da2d29eeb1c9e4b81ea9bc8c883409780bc5 (diff)
downloadIshtar-905dfbb0ebb91af7b7acaae256306f178863c57f.tar.bz2
Ishtar-905dfbb0ebb91af7b7acaae256306f178863c57f.zip
Syndication - WIP serialization
Diffstat (limited to 'ishtar_common/models_common.py')
-rw-r--r--ishtar_common/models_common.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index 79022acc6..58eac91e2 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -3246,6 +3246,41 @@ class MainItem(ShortMenuItem):
"""
QUICK_ACTIONS = []
+ SERIALIZE_EXCLUDE = ["search_vector"]
+
+ def full_serialize(self) -> dict:
+ """
+ API serialization
+ :return: data dict
+ """
+ full_result = {}
+ serialize_fields = []
+ for field in self._meta.get_fields():
+ if field.name in self.SERIALIZE_EXCLUDE:
+ continue
+ if field.many_to_one or field.one_to_one:
+ value = getattr(self, field.name)
+ if value:
+ value = str(value)
+ else:
+ value = None
+ full_result[field.name] = value
+ elif field.many_to_many:
+ values = getattr(self, field.name)
+ if values.count():
+ values = [str(v) for v in values]
+ else:
+ values = []
+ full_result[field.name] = values
+ else:
+ serialize_fields.append(field.name)
+ result = json.loads(serialize(
+ "json",
+ [self],
+ fields=serialize_fields
+ ))
+ full_result.update(result[0]["fields"])
+ return full_result
@classmethod
def class_verbose_name(cls):