mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Make render_composite() an internal API
This commit is contained in:
parent
963ee23e82
commit
5b22a690cc
@ -405,7 +405,7 @@ class Cache(object):
|
|||||||
if mi is None:
|
if mi is None:
|
||||||
return f.get_value_with_cache(book_id, self._get_proxy_metadata)
|
return f.get_value_with_cache(book_id, self._get_proxy_metadata)
|
||||||
else:
|
else:
|
||||||
return f.render_composite_with_cache(book_id, mi, mi.formatter, mi.template_cache)
|
return f._render_composite_with_cache(book_id, mi, mi.formatter, mi.template_cache)
|
||||||
|
|
||||||
@read_api
|
@read_api
|
||||||
def field_ids_for(self, name, book_id):
|
def field_ids_for(self, name, book_id):
|
||||||
|
@ -253,7 +253,8 @@ class CompositeField(OneToOneField):
|
|||||||
def bool_sort_key(self, val):
|
def bool_sort_key(self, val):
|
||||||
return self._bool_sort_key(force_to_bool(val))
|
return self._bool_sort_key(force_to_bool(val))
|
||||||
|
|
||||||
def render_composite(self, book_id, mi, formatter, template_cache):
|
def __render_composite(self, book_id, mi, formatter, template_cache):
|
||||||
|
' INTERNAL USE ONLY. DO NOT USE THIS OUTSIDE THIS CLASS! '
|
||||||
ans = formatter.safe_format(
|
ans = formatter.safe_format(
|
||||||
self.metadata['display']['composite_template'], mi, _('TEMPLATE ERROR'),
|
self.metadata['display']['composite_template'], mi, _('TEMPLATE ERROR'),
|
||||||
mi, column_name=self._composite_name, template_cache=template_cache).strip()
|
mi, column_name=self._composite_name, template_cache=template_cache).strip()
|
||||||
@ -261,11 +262,15 @@ class CompositeField(OneToOneField):
|
|||||||
self._render_cache[book_id] = ans
|
self._render_cache[book_id] = ans
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
def render_composite_with_cache(self, book_id, mi, formatter, template_cache):
|
def _render_composite_with_cache(self, book_id, mi, formatter, template_cache):
|
||||||
|
''' INTERNAL USE ONLY. DO NOT USE METHOD DIRECTLY. INSTEAD USE
|
||||||
|
db.composite_for() OR mi.get(). Those methods make sure there is no
|
||||||
|
risk of infinite recursion when evaluating temoplates that refer to
|
||||||
|
themselves. '''
|
||||||
with self._lock:
|
with self._lock:
|
||||||
ans = self._render_cache.get(book_id, None)
|
ans = self._render_cache.get(book_id, None)
|
||||||
if ans is None:
|
if ans is None:
|
||||||
return self.render_composite(book_id, mi, formatter, template_cache)
|
return self.__render_composite(book_id, mi, formatter, template_cache)
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
def clear_caches(self, book_ids=None):
|
def clear_caches(self, book_ids=None):
|
||||||
@ -281,7 +286,7 @@ class CompositeField(OneToOneField):
|
|||||||
ans = self._render_cache.get(book_id, None)
|
ans = self._render_cache.get(book_id, None)
|
||||||
if ans is None:
|
if ans is None:
|
||||||
mi = get_metadata(book_id)
|
mi = get_metadata(book_id)
|
||||||
return self.render_composite(book_id, mi, mi.formatter, mi.template_cache)
|
return self.__render_composite(book_id, mi, mi.formatter, mi.template_cache)
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
def sort_keys_for_books(self, get_metadata, lang_map):
|
def sort_keys_for_books(self, get_metadata, lang_map):
|
||||||
|
@ -232,7 +232,7 @@ def composite_getter(mi, field, dbref, book_id, cache, formatter, template_cache
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
ret = cache[field] = _('Invalid field: %s') % field
|
ret = cache[field] = _('Invalid field: %s') % field
|
||||||
else:
|
else:
|
||||||
ret = cache[field] = fo.render_composite_with_cache(book_id, mi, formatter, template_cache)
|
ret = cache[field] = fo._render_composite_with_cache(book_id, mi, formatter, template_cache)
|
||||||
except Exception:
|
except Exception:
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user