Fix raw_field returning incorrectly rendered lists.

Problem pointed out at http://www.mobileread.com/forums/showthread.php?t=259229
This commit is contained in:
Charles Haley 2015-04-16 09:26:52 +02:00
parent 530876cc47
commit 8f6056013b

View File

@ -130,7 +130,7 @@ class FormatterFunction(object):
if isinstance(ret, (str, unicode)): if isinstance(ret, (str, unicode)):
return ret return ret
if isinstance(ret, list): if isinstance(ret, list):
return ','.join(list) return ','.join(ret)
if isinstance(ret, (int, float, bool)): if isinstance(ret, (int, float, bool)):
return unicode(ret) return unicode(ret)
@ -348,7 +348,13 @@ class BuiltinRawField(BuiltinFormatterFunction):
'without applying any formatting.') 'without applying any formatting.')
def evaluate(self, formatter, kwargs, mi, locals, name): def evaluate(self, formatter, kwargs, mi, locals, name):
return unicode(getattr(mi, name, None)) res = getattr(mi, name, None)
if isinstance(res, list):
fm = mi.metadata_for_field(name)
if fm is None:
return ', '.join(res)
return fm['is_multiple']['list_to_ui'].join(res)
return unicode(res)
class BuiltinRawList(BuiltinFormatterFunction): class BuiltinRawList(BuiltinFormatterFunction):
name = 'raw_list' name = 'raw_list'