summaryrefslogtreecommitdiff
path: root/ishtar_common/models_common.py
diff options
context:
space:
mode:
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):