mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Make int and float custom fields work in save templates
This commit is contained in:
parent
d1e7517fce
commit
f24f95cd1b
@ -131,15 +131,14 @@ class SafeFormat(TemplateFormatter):
|
|||||||
self.vformat(b['display']['composite_template'], [], kwargs)
|
self.vformat(b['display']['composite_template'], [], kwargs)
|
||||||
return self.composite_values[key]
|
return self.composite_values[key]
|
||||||
if key in kwargs:
|
if key in kwargs:
|
||||||
return kwargs[key].replace('/', '_').replace('\\', '_')
|
val = kwargs[key]
|
||||||
|
return val.replace('/', '_').replace('\\', '_')
|
||||||
return ''
|
return ''
|
||||||
except:
|
except:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return key
|
return key
|
||||||
|
|
||||||
safe_formatter = SafeFormat()
|
|
||||||
|
|
||||||
def get_components(template, mi, id, timefmt='%b %Y', length=250,
|
def get_components(template, mi, id, timefmt='%b %Y', length=250,
|
||||||
sanitize_func=ascii_filename, replace_whitespace=False,
|
sanitize_func=ascii_filename, replace_whitespace=False,
|
||||||
to_lowercase=False):
|
to_lowercase=False):
|
||||||
@ -173,17 +172,22 @@ def get_components(template, mi, id, timefmt='%b %Y', length=250,
|
|||||||
custom_metadata = mi.get_all_user_metadata(make_copy=False)
|
custom_metadata = mi.get_all_user_metadata(make_copy=False)
|
||||||
for key in custom_metadata:
|
for key in custom_metadata:
|
||||||
if key in format_args:
|
if key in format_args:
|
||||||
|
cm = custom_metadata[key]
|
||||||
## TODO: NEWMETA: should ratings be divided by 2? The standard rating isn't...
|
## TODO: NEWMETA: should ratings be divided by 2? The standard rating isn't...
|
||||||
if custom_metadata[key]['datatype'] == 'series':
|
if cm['datatype'] == 'series':
|
||||||
format_args[key] = tsfmt(format_args[key])
|
format_args[key] = tsfmt(format_args[key])
|
||||||
if key+'_index' in format_args:
|
if key+'_index' in format_args:
|
||||||
format_args[key+'_index'] = fmt_sidx(format_args[key+'_index'])
|
format_args[key+'_index'] = fmt_sidx(format_args[key+'_index'])
|
||||||
elif custom_metadata[key]['datatype'] == 'datetime':
|
elif cm['datatype'] == 'datetime':
|
||||||
format_args[key] = strftime(timefmt, format_args[key].timetuple())
|
format_args[key] = strftime(timefmt, format_args[key].timetuple())
|
||||||
elif custom_metadata[key]['datatype'] == 'bool':
|
elif cm['datatype'] == 'bool':
|
||||||
format_args[key] = _('yes') if format_args[key] else _('no')
|
format_args[key] = _('yes') if format_args[key] else _('no')
|
||||||
|
elif cm['datatype'] in ['int', 'float']:
|
||||||
components = safe_formatter.safe_format(template, format_args,
|
if format_args[key] != 0:
|
||||||
|
format_args[key] = unicode(format_args[key])
|
||||||
|
else:
|
||||||
|
format_args[key] = ''
|
||||||
|
components = SafeFormat().safe_format(template, format_args,
|
||||||
'G_C-EXCEPTION!', mi)
|
'G_C-EXCEPTION!', mi)
|
||||||
components = [x.strip() for x in components.split('/') if x.strip()]
|
components = [x.strip() for x in components.split('/') if x.strip()]
|
||||||
components = [sanitize_func(x) for x in components if x]
|
components = [sanitize_func(x) for x in components if x]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user