From 1d96946752007304da42a8588b0fdd5da285287a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 1 Nov 2014 22:03:51 +0530 Subject: [PATCH] Refactor to make the template rendering logic its own function --- src/calibre/db/cache.py | 2 +- src/calibre/db/fields.py | 27 ++++++++++----------------- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index 16a5afaedc..b64df49a86 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -405,7 +405,7 @@ class Cache(object): if mi is None: return f.get_value_with_cache(book_id, self._get_proxy_metadata) else: - return f.render_composite(book_id, mi) + return f.render_composite_with_cache(book_id, mi, mi.formatter, mi.template_cache) @read_api def field_ids_for(self, name, book_id): diff --git a/src/calibre/db/fields.py b/src/calibre/db/fields.py index 9fb1a55a26..3b34670442 100644 --- a/src/calibre/db/fields.py +++ b/src/calibre/db/fields.py @@ -253,24 +253,19 @@ class CompositeField(OneToOneField): def bool_sort_key(self, val): return self._bool_sort_key(force_to_bool(val)) + def render_composite(self, book_id, mi, formatter, template_cache): + ans = formatter.safe_format( + self.metadata['display']['composite_template'], mi, _('TEMPLATE ERROR'), + mi, column_name=self._composite_name, template_cache=template_cache).strip() + with self._lock: + self._render_cache[book_id] = ans + return ans + def render_composite_with_cache(self, book_id, mi, formatter, template_cache): with self._lock: ans = self._render_cache.get(book_id, None) if ans is None: - ans = formatter.safe_format( - self.metadata['display']['composite_template'], mi, _('TEMPLATE ERROR'), - mi, column_name=self._composite_name, template_cache=template_cache).strip() - with self._lock: - self._render_cache[book_id] = ans - return ans - - def render_composite(self, book_id, mi): - with self._lock: - ans = self._render_cache.get(book_id, None) - if ans is None: - ans = mi.get(self._composite_name) - with self._lock: - self._render_cache[book_id] = ans + return self.render_composite(book_id, mi, formatter, template_cache) return ans def clear_caches(self, book_ids=None): @@ -286,9 +281,7 @@ class CompositeField(OneToOneField): ans = self._render_cache.get(book_id, None) if ans is None: mi = get_metadata(book_id) - ans = mi.get(self._composite_name) - with self._lock: - self._render_cache[book_id] = ans + return self.render_composite(book_id, mi, mi.formatter, mi.template_cache) return ans def sort_keys_for_books(self, get_metadata, lang_map):