From e3fffa8a8f310f12bdbd96e2094ded5c830b9867 Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Mon, 20 Mar 2023 19:35:38 +0100 Subject: [PATCH] Bugfix backup metadata for custom date, custom categories --- cps/db.py | 9 ++++++--- cps/tasks/metadata_backup.py | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cps/db.py b/cps/db.py index eb3e0f0a..8cc48e1d 100644 --- a/cps/db.py +++ b/cps/db.py @@ -408,7 +408,7 @@ class CustomColumns(Base): content['table'] = "custom_column_" + str(self.id) content['column'] = "value" content['datatype'] = self.datatype - content['is_multiple'] = None if not self.is_multiple else self.is_multiple + content['is_multiple'] = None if not self.is_multiple else "|" content['kind'] = "field" content['name'] = self.name content['search_terms'] = ['#' + self.label] @@ -422,9 +422,12 @@ class CustomColumns(Base): content['is_csp'] = False content['is_editable'] = self.editable content['rec_index'] = sequence + 22 # toDo why ?? - content['#value#'] = value + if isinstance(value, datetime): + content['#value#'] = {"__class__": "datetime.datetime", "__value__": value.strftime("%Y-%m-%dT%H:%M:%S+00:00")} + else: + content['#value#'] = value content['#extra#'] = extra - content['is_multiple2'] = {} + content['is_multiple2'] = {} if not self.is_multiple else {"cache_to_list": "|", "ui_to_list": ",", "list_to_ui": ", "} return json.dumps(content, ensure_ascii=False) diff --git a/cps/tasks/metadata_backup.py b/cps/tasks/metadata_backup.py index e76df95e..162d4852 100644 --- a/cps/tasks/metadata_backup.py +++ b/cps/tasks/metadata_backup.py @@ -218,7 +218,7 @@ class TaskBackupMetadata(CalibreTask): extra = None cc_entry = getattr(book, "custom_column_" + str(cc.id)) if cc_entry.__len__(): - value = cc_entry[0].value + value = [c.value for c in cc_entry] if cc.is_multiple else cc_entry[0].value extra = cc_entry[0].extra if hasattr(cc_entry[0], "extra") else None etree.SubElement(metadata, "meta", name="calibre:user_metadata:#{}".format(cc.label), content=cc.to_json(value, extra, sequence),