diff options
Diffstat (limited to 'mail/src')
| -rw-r--r-- | mail/src/leap/mail/imap/account.py | 32 | ||||
| -rw-r--r-- | mail/src/leap/mail/imap/parser.py | 5 | 
2 files changed, 31 insertions, 6 deletions
| diff --git a/mail/src/leap/mail/imap/account.py b/mail/src/leap/mail/imap/account.py index fd861e7..8f5b57b 100644 --- a/mail/src/leap/mail/imap/account.py +++ b/mail/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/mail/src/leap/mail/imap/parser.py b/mail/src/leap/mail/imap/parser.py index 306dcf0..6a9ace9 100644 --- a/mail/src/leap/mail/imap/parser.py +++ b/mail/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 | 
