diff options
Diffstat (limited to 'ishtar_common/models_common.py')
-rw-r--r-- | ishtar_common/models_common.py | 35 |
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): |