This commit is contained in:
Kovid Goyal 2015-04-13 13:18:53 +05:30
parent d13c4c2b94
commit e925b0b301

View File

@ -62,6 +62,7 @@ def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers=
row = u'<td class="title">%s</td><td class="value">%s</td>' row = u'<td class="title">%s</td><td class="value">%s</td>'
p = prepare_string_for_xml p = prepare_string_for_xml
a = partial(prepare_string_for_xml, attribute=True) a = partial(prepare_string_for_xml, attribute=True)
book_id = getattr(mi, 'id', 0)
for field in (field for field, display in field_list if display): for field in (field for field, display in field_list if display):
try: try:
@ -119,7 +120,7 @@ def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers=
path = force_unicode(mi.path, filesystem_encoding) path = force_unicode(mi.path, filesystem_encoding)
scheme = u'devpath' if isdevice else u'path' scheme = u'devpath' if isdevice else u'path'
url = prepare_string_for_xml(path if isdevice else url = prepare_string_for_xml(path if isdevice else
unicode(mi.id), True) unicode(book_id), True)
pathstr = _('Click to open') pathstr = _('Click to open')
extra = '' extra = ''
if isdevice: if isdevice:
@ -141,13 +142,13 @@ def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers=
bpath = '/'.join((os.path.basename(h), t)) bpath = '/'.join((os.path.basename(h), t))
data = ({ data = ({
'fmt':x, 'path':a(path or ''), 'fname':a(mi.format_files.get(x, '')), 'fmt':x, 'path':a(path or ''), 'fname':a(mi.format_files.get(x, '')),
'ext':x.lower(), 'id':mi.id, 'bpath':bpath, 'ext':x.lower(), 'id':book_id, 'bpath':bpath,
} for x in mi.formats) } for x in mi.formats)
fmts = [u'<a data-full-path="{path}/{fname}.{ext}" title="{bpath}/{fname}.{ext}" href="format:{id}:{fmt}">{fmt}</a>'.format(**x) for x in data] fmts = [u'<a data-full-path="{path}/{fname}.{ext}" title="{bpath}/{fname}.{ext}" href="format:{id}:{fmt}">{fmt}</a>'.format(**x) for x in data]
ans.append((field, row % (name, u', '.join(fmts)))) ans.append((field, row % (name, u', '.join(fmts))))
elif field == 'identifiers': elif field == 'identifiers':
urls = urls_from_identifiers(mi.identifiers) urls = urls_from_identifiers(mi.identifiers)
links = [u'<a href="%s" title="%s:%s" data-item="%s">%s</a>' % (a(url), a(id_typ), a(id_val), a(item_data(field, id_typ, mi.id)), p(namel)) links = [u'<a href="%s" title="%s:%s" data-item="%s">%s</a>' % (a(url), a(id_typ), a(id_val), a(item_data(field, id_typ, book_id)), p(namel))
for namel, id_typ, id_val, url in urls] for namel, id_typ, id_val, url in urls]
links = u', '.join(links) links = u', '.join(links)
if links: if links:
@ -186,7 +187,7 @@ def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers=
continue continue
val = '<a href="%s" title="%s" data-item="%s">%s</a>' % ( val = '<a href="%s" title="%s" data-item="%s">%s</a>' % (
search_href('publisher', mi.publisher), _('Click to see books with {0}: {1}').format(metadata['name'], a(mi.publisher)), search_href('publisher', mi.publisher), _('Click to see books with {0}: {1}').format(metadata['name'], a(mi.publisher)),
a(item_data('publisher', mi.publisher, mi.id)), p(mi.publisher)) a(item_data('publisher', mi.publisher, book_id)), p(mi.publisher))
ans.append((field, row % (name, val))) ans.append((field, row % (name, val)))
else: else:
val = mi.format_field(field)[-1] val = mi.format_field(field)[-1]
@ -207,7 +208,7 @@ def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers=
'<span class="%(cls)s">%(series)s</span></a>') % dict( '<span class="%(cls)s">%(series)s</span></a>') % dict(
sidx=fmt_sidx(sidx, use_roman=use_roman_numbers), cls="series_name", sidx=fmt_sidx(sidx, use_roman=use_roman_numbers), cls="series_name",
series=p(series), href=search_href(st, series), series=p(series), href=search_href(st, series),
data=a(item_data(field, series, mi.id)), data=a(item_data(field, series, book_id)),
tt=p(_('Click to see books in this series'))) tt=p(_('Click to see books in this series')))
elif metadata['datatype'] == 'datetime': elif metadata['datatype'] == 'datetime':
aval = getattr(mi, field) aval = getattr(mi, field)
@ -222,7 +223,8 @@ def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers=
if field == 'tags': if field == 'tags':
all_vals = sorted(all_vals, key=sort_key) all_vals = sorted(all_vals, key=sort_key)
links = ['<a href="%s" title="%s" data-item="%s">%s</a>' % ( links = ['<a href="%s" title="%s" data-item="%s">%s</a>' % (
search_href(st, x), _('Click to see books with {0}: {1}').format(metadata['name'], a(x)), a(item_data(field, x, mi.id)), p(x)) search_href(st, x), _('Click to see books with {0}: {1}').format(
metadata['name'], a(x)), a(item_data(field, x, book_id)), p(x))
for x in all_vals] for x in all_vals]
val = metadata['is_multiple']['list_to_ui'].join(links) val = metadata['is_multiple']['list_to_ui'].join(links)
elif metadata['datatype'] == 'enumeration': elif metadata['datatype'] == 'enumeration':
@ -232,7 +234,7 @@ def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers=
st = field st = field
val = '<a href="%s" title="%s" data-item="%s">%s</a>' % ( val = '<a href="%s" title="%s" data-item="%s">%s</a>' % (
search_href(st, val), a(_('Click to see books with {0}: {1}').format(metadata['name'], val)), search_href(st, val), a(_('Click to see books with {0}: {1}').format(metadata['name'], val)),
a(item_data(field, val, mi.id)), p(val)) a(item_data(field, val, book_id)), p(val))
ans.append((field, row % (name, val))) ans.append((field, row % (name, val)))