From 88262a75ffe7a25640333dcc4da2100830cae821 Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy Date: Fri, 12 Oct 2012 12:13:59 +0300 Subject: Add instructions support to PublicError When long additional text should follow the error message, one can supply instructions parameter to a class derived from PublicError. This will cause following text added to the error message: Additional instructions: `instructions' optional parameter could be a list or anything that coerces into unicode(). List entries will be joined with '\n'. https://fedorahosted.org/freeipa/ticket/3167 --- ipalib/errors.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'ipalib/errors.py') diff --git a/ipalib/errors.py b/ipalib/errors.py index 7f1113200..a6c8e7683 100644 --- a/ipalib/errors.py +++ b/ipalib/errors.py @@ -265,17 +265,20 @@ class PublicError(StandardError): ) self.format = format self.forwarded = False - 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 + self.msg = self.format % kw if isinstance(self.format, basestring): - self.strerror = ugettext(self.format) % kwargs + self.strerror = ugettext(self.format) % kw else: - self.strerror = self.format % kwargs + self.strerror = self.format % kw + if 'instructions' in kw: + def convert_instructions(value): + if isinstance(value, list): + result=u'\n'.join(map(lambda line: unicode(line), value)) + return result + return value + instructions = u'\n'.join((unicode(_('Additional instructions:')), + convert_instructions(kw['instructions']))) + self.strerror = u'\n'.join((self.strerror, instructions)) else: if isinstance(message, (Gettext, NGettext)): message = unicode(message) -- cgit