diff options
author | drebs <drebs@leap.se> | 2013-12-28 20:09:03 -0200 |
---|---|---|
committer | drebs <drebs@leap.se> | 2014-01-09 11:51:00 -0200 |
commit | 4381131163161c00f00a3eb300041374aa06d370 (patch) | |
tree | 2e286de83d56a5fe8d435ab1acd210402a398c1a /src/leap/mail/imap/account.py | |
parent | c2cccbcd4225049b35ea2c7be4bbe899532136ca (diff) |
Convert unicode to str when raising in IMAP server (#4830).
Diffstat (limited to 'src/leap/mail/imap/account.py')
-rw-r--r-- | src/leap/mail/imap/account.py | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/src/leap/mail/imap/account.py b/src/leap/mail/imap/account.py index fd861e7..8f5b57b 100644 --- a/src/leap/mail/imap/account.py +++ b/src/leap/mail/imap/account.py @@ -36,6 +36,23 @@ from leap.soledad.client import Soledad ####################################### +def _unicode_as_str(text): + """ + Return some representation of C{text} as a str. + + This is here mainly because Twisted's exception methods are not able to + print unicode text. + + :param text: The text to convert. + :type text: unicode + + :return: A representation of C{text} as str. + :rtype: str + """ + # XXX is there a better str representation for unicode? + return repr(text) + + class SoledadBackedAccount(WithMsgFields, IndexedDB, MBoxParser): """ An implementation of IAccount and INamespacePresenteer @@ -128,7 +145,8 @@ class SoledadBackedAccount(WithMsgFields, IndexedDB, MBoxParser): name = self._parse_mailbox_name(name) if name not in self.mailboxes: - raise imap4.MailboxException("No such mailbox") + raise imap4.MailboxException("No such mailbox: %s" % + _unicode_as_str(name)) return SoledadMailbox(name, soledad=self._soledad) @@ -154,7 +172,7 @@ class SoledadBackedAccount(WithMsgFields, IndexedDB, MBoxParser): name = self._parse_mailbox_name(name) if name in self.mailboxes: - raise imap4.MailboxCollision, name + raise imap4.MailboxCollision, _unicode_as_str(name) if not creation_ts: # by default, we pass an int value @@ -240,7 +258,8 @@ class SoledadBackedAccount(WithMsgFields, IndexedDB, MBoxParser): name = self._parse_mailbox_name(name) if not name in self.mailboxes: - raise imap4.MailboxException("No such mailbox") + raise imap4.MailboxException("No such mailbox: %s" % + _unicode_as_str(name)) mbox = self.getMailbox(name) @@ -279,14 +298,14 @@ class SoledadBackedAccount(WithMsgFields, IndexedDB, MBoxParser): newname = self._parse_mailbox_name(newname) if oldname not in self.mailboxes: - raise imap4.NoSuchMailbox, oldname + raise imap4.NoSuchMailbox, _unicode_as_str(oldname) inferiors = self._inferiorNames(oldname) inferiors = [(o, o.replace(oldname, newname, 1)) for o in inferiors] for (old, new) in inferiors: if new in self.mailboxes: - raise imap4.MailboxCollision, new + raise imap4.MailboxCollision, _unicode_as_str(new) for (old, new) in inferiors: mbox = self._get_mailbox_by_name(old) @@ -367,7 +386,8 @@ class SoledadBackedAccount(WithMsgFields, IndexedDB, MBoxParser): """ name = self._parse_mailbox_name(name) if name not in self.subscriptions: - raise imap4.MailboxException, "Not currently subscribed to " + name + raise imap4.MailboxException, \ + "Not currently subscribed to %s" % _unicode_as_str(name) self._set_subscription(name, False) def listMailboxes(self, ref, wildcard): |