Changeset View
Changeset View
Standalone View
Standalone View
pykolab/imap/cyrus.py
Show First 20 Lines • Show All 167 Lines • ▼ Show 20 Lines | def login(self, *args, **kw): | ||||
level=8 | level=8 | ||||
) | ) | ||||
def find_mailfolder_server(self, mailfolder): | def find_mailfolder_server(self, mailfolder): | ||||
annotations = {} | annotations = {} | ||||
_mailfolder = self.parse_mailfolder(mailfolder) | _mailfolder = self.parse_mailfolder(mailfolder) | ||||
prefix = _mailfolder['path_parts'].pop(0) | prefix = _mailfolder['path_parts'][0] | ||||
mbox = _mailfolder['path_parts'].pop(0) | mbox = _mailfolder['path_parts'][1] | ||||
if _mailfolder['domain'] is not None: | if _mailfolder['domain'] is not None: | ||||
mailfolder = "%s%s%s@%s" % ( | mailfolder = "%s%s%s@%s" % ( | ||||
prefix, | prefix, | ||||
self.separator, | self.separator, | ||||
mbox, | mbox, | ||||
_mailfolder['domain'] | _mailfolder['domain'] | ||||
) | ) | ||||
# TODO: Workaround for undelete | # TODO: Workaround for undelete | ||||
if len(self.lm(mailfolder)) < 1: | if len(self.lm(mailfolder)) < 1 and _mailfolder['hex_timestamp']: | ||||
return self.server | mailfolder = self.folder_utf7("DELETED/%s%s%s@%s" % ( | ||||
self.separator.join(_mailfolder['path_parts']), | |||||
self.separator, | |||||
_mailfolder['hex_timestamp'], | |||||
_mailfolder['domain']) | |||||
) | |||||
# TODO: Murder capabilities may have been suppressed using Cyrus IMAP | # TODO: Murder capabilities may have been suppressed using Cyrus IMAP | ||||
# configuration. | # configuration. | ||||
if not self.murder: | if not self.murder: | ||||
return self.server | return self.server | ||||
log.debug( | log.debug( | ||||
_("Checking actual backend server for folder %s " + | _("Checking actual backend server for folder %s " + | ||||
Show All 23 Lines | def find_mailfolder_server(self, mailfolder): | ||||
num_try = 0 | num_try = 0 | ||||
ann_path = "/vendor/cmu/cyrus-imapd/server" | ann_path = "/vendor/cmu/cyrus-imapd/server" | ||||
s_ann_path = "/shared%s" % (ann_path) | s_ann_path = "/shared%s" % (ann_path) | ||||
while 1: | while 1: | ||||
num_try += 1 | num_try += 1 | ||||
annotations = self._getannotation( | annotations = self._getannotation( | ||||
mailfolder, | '"%s"' % (mailfolder), | ||||
ann_path | ann_path | ||||
) | ) | ||||
if annotations.has_key(mailfolder): | if annotations.has_key(mailfolder): | ||||
if annotations[mailfolder].has_key(s_ann_path): | if annotations[mailfolder].has_key(s_ann_path): | ||||
break | break | ||||
if max_tries <= num_try: | if max_tries <= num_try: | ||||
▲ Show 20 Lines • Show All 379 Lines • Show Last 20 Lines |