2 commits - pykolab/auth pykolab/imap
Jeroen van Meeuwen
vanmeeuwen at kolabsys.com
Wed Nov 19 10:26:36 CET 2014
pykolab/auth/ldap/__init__.py | 18 +++++++++++++++---
pykolab/imap/__init__.py | 31 +++++++++++++++++++------------
2 files changed, 34 insertions(+), 15 deletions(-)
New commits:
commit 7c3b90e63d6479393b5ad92248cc58b45c75587c
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date: Wed Nov 19 10:25:57 2014 +0100
Fix execution of change_delete_%s() resulting in a traceback (#3939)
diff --git a/pykolab/auth/ldap/__init__.py b/pykolab/auth/ldap/__init__.py
index c71c397..c5b98c3 100644
--- a/pykolab/auth/ldap/__init__.py
+++ b/pykolab/auth/ldap/__init__.py
@@ -1421,13 +1421,19 @@ class LDAP(pykolab.base.Base):
"""
self._change_delete_unknown(entry, change)
+ def _change_delete_resource(self, entry, change):
+ pass
+
+ def _change_delete_role(self, entry, change):
+ pass
+
def _change_delete_sharedfolder(self, entry, change):
pass
def _change_delete_unknown(self, entry, change):
"""
An entry has been deleted, and we do not know of what object type
- the entry was - user, group, role or sharedfolder.
+ the entry was - user, group, resource, role or sharedfolder.
"""
result_attribute = conf.get('cyrus-sasl', 'result_attribute')
@@ -1438,10 +1444,16 @@ class LDAP(pykolab.base.Base):
return None
success = True
- for _type in ['user','group','role','sharedfolder']:
+ for _type in ['user','group','resource','role','sharedfolder']:
try:
- eval("success = self._change_delete_%s(entry, change)" % (_type))
+ success = eval("self._change_delete_%s(entry, change)" % (_type))
+ print success
except:
+ if conf.debuglevel > 8:
+ import traceback
+ log.error(_("%s") % (traceback.format_exc()))
+
+ print success
success = False
if success:
commit 1c8e0c420989a5b322cb0605800d0f8299a0e9df
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date: Wed Nov 19 10:22:43 2014 +0100
Add a function imap_murder() and use it
diff --git a/pykolab/imap/__init__.py b/pykolab/imap/__init__.py
index 343ff10..ac359a0 100644
--- a/pykolab/imap/__init__.py
+++ b/pykolab/imap/__init__.py
@@ -280,6 +280,12 @@ class IMAP(object):
else:
return '/'
+ def imap_murder(self):
+ if hasattr(self.imap, 'murder') and self.imap.murder:
+ return True
+ else:
+ return False
+
def namespaces(self):
"""
Obtain the namespaces.
@@ -474,20 +480,20 @@ class IMAP(object):
self.create_folder(folder_name, server)
# In a Cyrus IMAP Murder topology, wait for the murder to have settled
- if hasattr(self.imap, 'murder') and self.imap.murder:
+ if self.imap_murder():
self.disconnect()
self.connect()
- created = False
- last_log = time.time()
- while not created:
- created = self.has_folder(folder_name)
- if not created:
- if time.time() - last_log > 5:
- log.info(_("Waiting for the Cyrus IMAP Murder to settle..."))
- last_log = time.time()
+ created = False
+ last_log = time.time()
+ while not created:
+ created = self.has_folder(folder_name)
+ if not created:
+ if time.time() - last_log > 5:
+ log.info(_("Waiting for the Cyrus IMAP Murder to settle..."))
+ last_log = time.time()
- time.sleep(0.5)
+ time.sleep(0.5)
_additional_folders = None
@@ -546,7 +552,7 @@ class IMAP(object):
admin_login = conf.get(backend, 'admin_login')
admin_password = conf.get(backend, 'admin_password')
- if backend == "cyrus-imap" and hasattr(self.imap, 'murder') and self.imap.murder:
+ if self.imap_murder():
server = self.user_mailbox_server(folder)
else:
server = None
@@ -562,13 +568,14 @@ class IMAP(object):
(personal, other, shared) = self.namespaces()
success = True
except Exception, errmsg:
- if time.time() - last_log > 5:
+ if time.time() - last_log > 5 and self.imap_murder():
log.debug(_("Waiting for the Cyrus murder to settle... %r") % (errmsg))
last_log = time.time()
if conf.debuglevel > 8:
import traceback
traceback.print_exc()
+
time.sleep(0.5)
for additional_folder in additional_folders.keys():
More information about the commits
mailing list