mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Avoid reading splitter on every call, only read once at startup
This commit is contained in:
parent
50634ff252
commit
14d50b58af
@ -182,6 +182,10 @@ class CompositeField(OneToOneField):
|
|||||||
self._render_cache = {}
|
self._render_cache = {}
|
||||||
self._lock = Lock()
|
self._lock = Lock()
|
||||||
self._composite_name = '#' + self.metadata['label']
|
self._composite_name = '#' + self.metadata['label']
|
||||||
|
try:
|
||||||
|
self.splitter = self.metadata['is_multiple'].get('cache_to_list', None)
|
||||||
|
except AttributeError:
|
||||||
|
self.splitter = None
|
||||||
|
|
||||||
def render_composite(self, book_id, mi):
|
def render_composite(self, book_id, mi):
|
||||||
with self._lock:
|
with self._lock:
|
||||||
@ -216,16 +220,10 @@ class CompositeField(OneToOneField):
|
|||||||
|
|
||||||
def iter_searchable_values(self, get_metadata, candidates, default_value=None):
|
def iter_searchable_values(self, get_metadata, candidates, default_value=None):
|
||||||
val_map = defaultdict(set)
|
val_map = defaultdict(set)
|
||||||
try:
|
splitter = self.splitter
|
||||||
splitter = self.table.metadata['is_multiple'].get('cache_to_list', None)
|
|
||||||
except AttributeError:
|
|
||||||
splitter = None
|
|
||||||
for book_id in candidates:
|
for book_id in candidates:
|
||||||
vals = self.get_value_with_cache(book_id, get_metadata)
|
vals = self.get_value_with_cache(book_id, get_metadata)
|
||||||
if splitter:
|
vals = (vv.strip() for vv in vals.split(splitter)) if splitter else (vals,)
|
||||||
vals = (vv.strip() for vv in vals.split(splitter))
|
|
||||||
else:
|
|
||||||
vals = (vals,)
|
|
||||||
for v in vals:
|
for v in vals:
|
||||||
if v:
|
if v:
|
||||||
val_map[v].add(book_id)
|
val_map[v].add(book_id)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user