diff options
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 |
commit | 905dfbb0ebb91af7b7acaae256306f178863c57f (patch) | |
tree | f9a0ceb1b16a84c1ae4cb56a32115409c092bf73 /ishtar_common/models_common.py | |
parent | dfb5da2d29eeb1c9e4b81ea9bc8c883409780bc5 (diff) | |
download | Ishtar-905dfbb0ebb91af7b7acaae256306f178863c57f.tar.bz2 Ishtar-905dfbb0ebb91af7b7acaae256306f178863c57f.zip |
Syndication - WIP serialization
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): |