diff options
author | Tomás Touceda <chiiph@leap.se> | 2014-01-09 11:20:43 -0300 |
---|---|---|
committer | Tomás Touceda <chiiph@leap.se> | 2014-01-09 11:20:43 -0300 |
commit | aaf9edb5d1a74b2726ac106249c313ad97a0b17a (patch) | |
tree | 2e286de83d56a5fe8d435ab1acd210402a398c1a /src | |
parent | c2cccbcd4225049b35ea2c7be4bbe899532136ca (diff) | |
parent | 4381131163161c00f00a3eb300041374aa06d370 (diff) |
Merge remote-tracking branch 'refs/remotes/drebs/bug/4830_convert-unicode-to-str-when-raising-on-imap-server' into develop
Diffstat (limited to 'src')
-rw-r--r-- | src/leap/mail/imap/account.py | 32 | ||||
-rw-r--r-- | src/leap/mail/imap/parser.py | 5 |
2 files changed, 31 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): diff --git a/src/leap/mail/imap/parser.py b/src/leap/mail/imap/parser.py index 306dcf0..6a9ace9 100644 --- a/src/leap/mail/imap/parser.py +++ b/src/leap/mail/imap/parser.py @@ -102,6 +102,11 @@ class MBoxParser(object): def _parse_mailbox_name(self, name): """ + Return a normalized representation of the mailbox C{name}. + + This method ensures that an eventual initial 'inbox' part of a + mailbox name is made uppercase. + :param name: the name of the mailbox :type name: unicode |