support multi-line error messages in exceptions

This commit is contained in:
Alexander Bokovoy
2012-10-04 15:05:17 +03:00
committed by Martin Kosek
parent 0575e68013
commit 6f45de10d7
3 changed files with 42 additions and 10 deletions

View File

@@ -265,11 +265,17 @@ class PublicError(StandardError):
)
self.format = format
self.forwarded = False
self.msg = self.format % kw
def convert_keyword(value):
if isinstance(value, list):
result=u'\n'.join(map(lambda line: unicode(line), value))
return result
return value
kwargs = dict(map(lambda (k,v): (k, convert_keyword(v)), kw.items()))
self.msg = self.format % kwargs
if isinstance(self.format, basestring):
self.strerror = ugettext(self.format) % kw
self.strerror = ugettext(self.format) % kwargs
else:
self.strerror = self.format % kw
self.strerror = self.format % kwargs
else:
if isinstance(message, (Gettext, NGettext)):
message = unicode(message)