Allow user-defined functions to be directly used in save-to-disk templates

This commit is contained in:
Charles Haley 2011-09-25 09:00:27 +02:00
parent 7e6d4fd68b
commit 4ece2a59e2

View File

@ -249,6 +249,7 @@ class SaveWorker(Thread):
recs[pref.name] = getattr(self.opts, pref.name) recs[pref.name] = getattr(self.opts, pref.name)
plugboards = self.db.prefs.get('plugboards', {}) plugboards = self.db.prefs.get('plugboards', {})
template_functions = self.db.prefs.get('user_template_functions', [])
for i, task in enumerate(tasks): for i, task in enumerate(tasks):
tids = [x[-1] for x in task] tids = [x[-1] for x in task]
@ -260,7 +261,7 @@ class SaveWorker(Thread):
job = ParallelJob('save_book', job = ParallelJob('save_book',
'Save books (%d of %d)'%(i, len(tasks)), 'Save books (%d of %d)'%(i, len(tasks)),
lambda x,y:x, lambda x,y:x,
args=[tids, dpath, plugboards, self.path, recs]) args=[tids, dpath, plugboards, template_functions, self.path, recs])
jobs.add(job) jobs.add(job)
server.add_job(job) server.add_job(job)
@ -312,9 +313,12 @@ class SaveWorker(Thread):
break break
def save_book(ids, dpath, plugboards, path, recs, notification=lambda x,y:x): def save_book(ids, dpath, plugboards, template_functions, path, recs,
notification=lambda x,y:x):
from calibre.library.save_to_disk import config, save_serialized_to_disk from calibre.library.save_to_disk import config, save_serialized_to_disk
from calibre.customize.ui import apply_null_metadata from calibre.customize.ui import apply_null_metadata
from calibre.utils.formatter_functions import load_user_template_functions
load_user_template_functions(template_functions)
opts = config().parse() opts = config().parse()
for name in recs: for name in recs:
setattr(opts, name, recs[name]) setattr(opts, name, recs[name])