Author: reinhard Date: 2010-04-20 15:46:30 -0500 (Tue, 20 Apr 2010) New Revision: 10157
Modified: trunk/gnue-common/ trunk/gnue-common/src/base/errors.py trunk/gnue-common/src/datasources/drivers/other/appserver.py Log: Avoid encoding problems when exception messages contain non-ASCII characters in case of external (non-GNUe) exceptions. Property changes on: trunk/gnue-common ___________________________________________________________________ Name: bzr:revision-info - timestamp: 2010-04-09 20:46:14.513000011 +0200 committer: Reinhard Müller <reinhard.muel...@bytewise.at> properties: branch-nick: common + timestamp: 2010-04-20 11:36:33.517999887 +0200 committer: Reinhard Müller <reinhard.muel...@bytewise.at> properties: branch-nick: common Name: bzr:file-ids - .bzrignore bzrignore-20100409182546-xa0zbayeoj88p9k2-1 README.bzr 9...@3a364389-8fce-0310-8f11-cc363fde16c7:trunk%2Fgnue-common:README.svn setup-bzr.py 9...@3a364389-8fce-0310-8f11-cc363fde16c7:trunk%2Fgnue-common:setup-svn.py setup.bzr 9...@3a364389-8fce-0310-8f11-cc363fde16c7:trunk%2Fgnue-common:setup.svn + Name: bzr:revision-id:v3-single1-dHJ1bmsvZ251ZS1jb21tb24. - 3114 reinhard.muel...@bytewise.at-20100409184614-7ocer3a78alcs3mm + 3114 reinhard.muel...@bytewise.at-20100409184614-7ocer3a78alcs3mm 3115 reinhard.muel...@bytewise.at-20100420093633-j5qknxin2umh25p7 Modified: trunk/gnue-common/src/base/errors.py =================================================================== --- trunk/gnue-common/src/base/errors.py 2010-04-20 20:46:26 UTC (rev 10156) +++ trunk/gnue-common/src/base/errors.py 2010-04-20 20:46:30 UTC (rev 10157) @@ -104,7 +104,7 @@ C{user}). Always an 8 bit string. 2. C{name}: the name of the exception, usually the class name without any modules prepended. Always a unicode string. - 3. C{message}: the exception message, the text priarly displayed to the + 3. C{umessage}: the exception message, the text priarly displayed to the user. Always a unicode string. 4. C{detail}: the exception detail, in many cases a string representation of the traceback. Always a unicode string. @@ -165,8 +165,8 @@ unicode strings. All other user-defined exceptions should be derived from this class. - @ivar message: The error message. - @type message: unicode + @ivar umessage: The error message. + @type umessage: unicode @ivar group: The group or category of the exception. Can be one of 'system', 'admin', 'application', or 'user'. @type group: str @@ -181,19 +181,25 @@ """ def __init__(self, message, group='system'): + + # Make sure message is a unicode string. + if not isinstance(message, unicode): + message = i18n.inconv(str(message)) + StandardError.__init__(self, i18n.outconv(message)) - self.message = message - self.group = group - self.name = None - self.detail = None + self.umessage = message + self.group = group + self.name = None + self.detail = None + # ------------------------------------------------------------------------- # Unicode representation # ------------------------------------------------------------------------- def __unicode__(self): - return self.message + return self.umessage # ============================================================================= @@ -321,6 +327,14 @@ else: name = unicode(etype.__name__) + # message + if isinstance(evalue, Error): + message = evalue.umessage + else: + # We're never sure in which encoding the message actually is, so we're + # cautious and use inconv which does errors='replace'. + message = i18n.inconv(evalue.message) + # detail if isinstance(evalue, Error) and evalue.detail is not None: detail = evalue.detail @@ -333,4 +347,4 @@ # current encoding, so we have to convert to Unicode. detail = i18n.inconv(''.join(lines)) - return (group, name, unicode(evalue), detail) + return (group, name, message, detail) Modified: trunk/gnue-common/src/datasources/drivers/other/appserver.py =================================================================== --- trunk/gnue-common/src/datasources/drivers/other/appserver.py 2010-04-20 20:46:26 UTC (rev 10156) +++ trunk/gnue-common/src/datasources/drivers/other/appserver.py 2010-04-20 20:46:30 UTC (rev 10157) @@ -387,7 +387,7 @@ except errors.RemoteError, e: if e.name == 'AuthError': - raise Exceptions.LoginError, e.message + raise Exceptions.LoginError, e.umessage else: raise _______________________________________________ commit-gnue mailing list commit-gnue@gnu.org http://lists.gnu.org/mailman/listinfo/commit-gnue