From 6ddef1181931de8b5ab2e6da97f4665675991667 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 30 Mar 2023 08:56:19 +0530 Subject: [PATCH] Use a getter for link_maps in ProxyMetadata Also allow is_null() to work with it. --- src/calibre/db/cache.py | 2 +- src/calibre/db/lazy.py | 14 ++++++++++---- src/calibre/ebooks/metadata/book/base.py | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index 949ae5c4e0..0a3f6b4d69 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -391,7 +391,7 @@ class Cache: for key in composites: mi.set(key, val=self._composite_for(key, book_id, mi)) - mi.link_maps = self.get_all_link_maps_for_book(book_id) + mi.link_maps = self._get_all_link_maps_for_book(book_id) user_cat_vals = {} if get_user_categories: diff --git a/src/calibre/db/lazy.py b/src/calibre/db/lazy.py index 1882dcd3a8..01053ccb8c 100644 --- a/src/calibre/db/lazy.py +++ b/src/calibre/db/lazy.py @@ -147,6 +147,15 @@ def adata_getter(field): return func +def link_maps_getter(dbref, book_id, cache): + try: + ans = cache['link_maps'] + except KeyError: + db = dbref() + ans = cache['link_maps'] = db.get_all_link_maps_for_book(book_id) + return ans + + def dt_getter(field): def func(dbref, book_id, cache): try: @@ -300,6 +309,7 @@ getters = { 'application_id':lambda x, book_id, y: book_id, 'id':lambda x, book_id, y: book_id, 'virtual_libraries':virtual_libraries_getter, + 'link_maps': link_maps_getter, } for field in ('comments', 'publisher', 'identifiers', 'series', 'rating'): @@ -351,10 +361,6 @@ class ProxyMetadata(Metadata): return custom_getter(field, ga(self, '_db'), ga(self, '_book_id'), ga(self, '_cache')) return composite_getter(self, field, ga(self, '_db'), ga(self, '_book_id'), ga(self, '_cache'), ga(self, 'formatter'), ga(self, 'template_cache')) - if field == 'link_maps': - db = ga(self, '_db')() - return db.get_all_link_maps_for_book(ga(self, '_book_id')) - try: return ga(self, '_cache')[field] except KeyError: diff --git a/src/calibre/ebooks/metadata/book/base.py b/src/calibre/ebooks/metadata/book/base.py index a7afd67f46..df7fcad934 100644 --- a/src/calibre/ebooks/metadata/book/base.py +++ b/src/calibre/ebooks/metadata/book/base.py @@ -46,6 +46,7 @@ NULL_VALUES = { 'title' : _('Unknown'), 'user_categories' : {}, 'author_link_map' : {}, + 'link_maps' : {}, 'language' : 'und' }