Metadata jacket: Change formatting of series to match that used by the book details panel. Also allow access to the raw series name and number when customizing the jacket template.

This commit is contained in:
Kovid Goyal 2017-04-12 12:35:49 +05:30
parent 842ac7b254
commit 84f7755a43
2 changed files with 19 additions and 9 deletions

View File

@ -12,7 +12,8 @@
</tr>
<tr>
<!-- If you do not want the series number to be formatted using roman numerals
change {series.roman} to {series} -->
change {series.roman} to {series}. You can also access the raw series name and number
using {series.name}, {series.number} or {series.roman_number} -->
<td class="cbj_series" colspan="2">{series.roman}</td>
</tr>
<tr>

View File

@ -169,13 +169,17 @@ class Series(unicode):
def __new__(self, series, series_index):
if series and series_index is not None:
roman = _('Number {1} of <em>{0}</em>').format(
roman = _('{1} of <em>{0}</em>').format(
escape(series), escape(fmt_sidx(series_index, use_roman=True)))
series = escape(series + ' [%s]'%fmt_sidx(series_index, use_roman=False))
combined = _('{1} of <em>{0}</em>').format(
escape(series), escape(fmt_sidx(series_index, use_roman=False)))
else:
series = roman = escape(series or u'')
s = unicode.__new__(self, series)
combined = roman = escape(series or u'')
s = unicode.__new__(self, combined)
s.roman = roman
s.name = escape(series or u'')
s.number = escape(fmt_sidx(series_index or 1.0, use_roman=False))
s.roman_number = escape(fmt_sidx(series_index or 1.0, use_roman=True))
return s
@ -252,12 +256,17 @@ def render_jacket(mi, output_profile,
searchable_tags=' '.join(escape(t)+'ttt' for t in tags.tags_list),
)
for key in mi.custom_field_keys():
m = mi.get_user_metadata(key, False) or {}
try:
display_name, val = mi.format_field_extended(key)[:2]
key = key.replace('#', '_')
args[key] = escape(val)
args[key+'_label'] = escape(display_name)
except:
dkey = key.replace('#', '_')
dt = m.get('datatype')
if dt == 'series':
args[dkey] = Series(mi.get(key), mi.get(key + '_index'))
else:
args[dkey] = escape(val)
args[dkey+'_label'] = escape(display_name)
except Exception:
# if the val (custom column contents) is None, don't add to args
pass