diff --git a/cyruslib.py b/cyruslib.py --- a/cyruslib.py +++ b/cyruslib.py @@ -848,7 +848,7 @@ concat_items = [] for item in data: if isinstance(item, tuple): - item = ' '.join([str(x) for x in item]) + item = (' '.join([str(x) for x in item])).encode('utf-8') if len(concat_items) > 0: concat_items.append(item) @@ -871,7 +871,7 @@ tokens = tokenize(annotation) folder = tokens[0] - if folder != mailbox: + if mailbox != b'*' and folder != mailbox: quoted_mailbox = "\"%s\"" % (mailbox) if folder != quoted_mailbox: # print("mismatch") diff --git a/pykolab/imap/__init__.py b/pykolab/imap/__init__.py --- a/pykolab/imap/__init__.py +++ b/pykolab/imap/__init__.py @@ -305,13 +305,13 @@ def folder_quote(self, folder): return u'"' + str(folder).strip('"') + '"' - def get_metadata(self, folder): + def get_metadata(self, folder, pattern='*'): """ Obtain all metadata entries on a folder """ metadata = {} - _metadata = self.imap.getmetadata(self.folder_utf7(folder), '*') + _metadata = self.imap.getmetadata(self.folder_utf7(folder), pattern) for (k, v) in _metadata.items(): metadata[self.folder_utf8(k)] = v diff --git a/wallace/module_invitationpolicy.py b/wallace/module_invitationpolicy.py --- a/wallace/module_invitationpolicy.py +++ b/wallace/module_invitationpolicy.py @@ -807,7 +807,7 @@ if not imap_proxy_auth(user_rec): return result - folders = imap.get_metadata('*') + folders = imap.get_metadata('*', FOLDER_TYPE_ANNOTATION) log.debug( _("List %r folders for user %r: %r") % ( @@ -820,16 +820,17 @@ (ns_personal, ns_other, ns_shared) = imap.namespaces() + _type = _type.encode('utf-8') _folders = {} # Filter the folders by type relevance for folder, metadata in folders.items(): - key = '/shared' + FOLDER_TYPE_ANNOTATION + key = ('/shared' + FOLDER_TYPE_ANNOTATION).encode('utf-8') if key in metadata: if metadata[key].startswith(_type): _folders[folder] = metadata - key = '/private' + FOLDER_TYPE_ANNOTATION + key = ('/private' + FOLDER_TYPE_ANNOTATION).encode('utf-8') if key in metadata: if metadata[key].startswith(_type): _folders[folder] = metadata @@ -857,29 +858,29 @@ if len([_ns for _ns in ns_shared if folder.startswith(_ns)]) > 0: continue - key = '/shared' + FOLDER_TYPE_ANNOTATION + key = ('/shared' + FOLDER_TYPE_ANNOTATION).encode('utf-8') if key in metadata: if metadata[key].startswith(_type): result.append(folder) - key = '/private' + FOLDER_TYPE_ANNOTATION + key = ('/private' + FOLDER_TYPE_ANNOTATION).encode('utf-8') if key in metadata: if metadata[key].startswith(_type): result.append(folder) # store default folder in user record - if metadata[key].endswith('.default'): + if metadata[key].endswith(b'.default'): user_rec['_default_folder'] = folder continue # store private and confidential folders in user record - if metadata[key].endswith('.confidential'): + if metadata[key].endswith(b'.confidential'): if '_confidential_folder' not in user_rec: user_rec['_confidential_folder'] = folder continue - if metadata[key].endswith('.private'): + if metadata[key].endswith(b'.private'): if '_private_folder' not in user_rec: user_rec['_private_folder'] = folder @@ -1123,7 +1124,7 @@ imap.folder_utf7(targetfolder), None, None, - saveobj.to_message(creator="Kolab Server ").as_string() + saveobj.to_message(creator="Kolab Server ").as_string().encode('utf-8') ) return result