Branch 'pykolab-0.6' - 2 commits - pykolab/auth pykolab/cli pykolab/imap

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Mon Jun 9 16:49:59 CEST 2014


 pykolab/auth/ldap/__init__.py               |   32 ++++++++++++++++--------
 pykolab/cli/cmd_remove_user_subscription.py |    6 ++--
 pykolab/imap/__init__.py                    |   37 +++++++++++++++-------------
 3 files changed, 45 insertions(+), 30 deletions(-)

New commits:
commit 7a1bce58116882ad2e9498cafd641361209be6cf
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Tue May 27 14:15:06 2014 +0200

    Make sure a mailbox is only renamed if it actually exists.

diff --git a/pykolab/auth/ldap/__init__.py b/pykolab/auth/ldap/__init__.py
index c0c3297..1714705 100644
--- a/pykolab/auth/ldap/__init__.py
+++ b/pykolab/auth/ldap/__init__.py
@@ -1346,7 +1346,7 @@ class LDAP(pykolab.base.Base):
                 )
 
         else:
-            folder = "user%s%s" % (self.imap.separator,entry[result_attribute].lower())
+            folder = "user%s%s" % (self.imap.get_separator(),entry[result_attribute].lower())
 
         server = self.imap.user_mailbox_server(folder)
 
@@ -1676,19 +1676,31 @@ class LDAP(pykolab.base.Base):
 
         if entry_changes.has_key(result_attribute):
             if not entry_changes[result_attribute] == old_canon_attr:
-                self.imap.user_mailbox_rename(
-                        old_canon_attr,
-                        entry_changes[result_attribute]
-                    )
+                if old_canon_attr == None:
+                    self.imap.user_mailbox_create(
+                            entry_changes[result_attribute]
+                        )
+
+                else:
+                    self.imap.user_mailbox_rename(
+                            old_canon_attr,
+                            entry_changes[result_attribute]
+                        )
 
                 entry[result_attribute] = entry_changes[result_attribute]
                 cache.get_entry(self.domain, entry)
         elif entry.has_key(result_attribute):
             if not entry[result_attribute] == old_canon_attr:
-                self.imap.user_mailbox_rename(
-                        old_canon_attr,
-                        entry[result_attribute]
-                    )
+                if old_canon_attr == None:
+                    self.imap.user_mailbox_create(
+                            entry[result_attribute]
+                        )
+
+                else:
+                    self.imap.user_mailbox_rename(
+                            old_canon_attr,
+                            entry[result_attribute]
+                        )
 
                 cache.get_entry(self.domain, entry)
 
@@ -1864,7 +1876,7 @@ class LDAP(pykolab.base.Base):
                 server = self.imap.user_mailbox_server(folder)
             else:
                 folder = "user%s%s" % (
-                        self.imap.separator,
+                        self.imap.get_separator(),
                         entry[result_attribute]
                     )
 
diff --git a/pykolab/imap/__init__.py b/pykolab/imap/__init__.py
index fbe515d..a72de30 100644
--- a/pykolab/imap/__init__.py
+++ b/pykolab/imap/__init__.py
@@ -381,10 +381,10 @@ class IMAP(object):
             Create a shared folder.
         """
 
-        folder_name = "shared%s%s" % (self.imap.separator, folder_path)
+        folder_name = "shared%s%s" % (self.get_separator(), folder_path)
 
         # Correct folder_path being supplied with "shared/shared/" for example
-        if folder_name.startswith("shared%s" % (self.imap.separator) * 2):
+        if folder_name.startswith("shared%s" % (self.get_separator()) * 2):
             folder_name = folder_name[7:]
 
         log.info(_("Creating new shared folder %s") %(folder_name))
@@ -394,19 +394,19 @@ class IMAP(object):
         """
             Check if a shared mailbox exists.
         """
-        folder_name = 'shared%s%s' % (self.imap.separator, folder_path)
+        folder_name = 'shared%s%s' % (self.get_separator(), folder_path)
 
         # Correct folder_path being supplied with "shared/shared/" for example
-        if folder_name.startswith("shared%s" % (self.imap.separator) * 2):
+        if folder_name.startswith("shared%s" % (self.get_separator()) * 2):
             folder_name = folder_name[7:]
 
         return self.has_folder(folder_name)
 
     def shared_folder_set_type(self, folder_path, folder_type):
-        folder_name = 'shared%s%s' % (self.imap.separator, folder_path)
+        folder_name = 'shared%s%s' % (self.get_separator(), folder_path)
 
         # Correct folder_path being supplied with "shared/shared/" for example
-        if folder_name.startswith("shared%s" % (self.imap.separator) * 2):
+        if folder_name.startswith("shared%s" % (self.get_separator()) * 2):
             folder_name = folder_name[7:]
 
         self.set_metadata(folder_name, '/shared/vendor/kolab/folder-type', folder_type)
@@ -416,10 +416,10 @@ class IMAP(object):
             Create a shared folder.
         """
 
-        folder_name = "shared%s%s" % (self.imap.separator, mailbox_base_name)
+        folder_name = "shared%s%s" % (self.get_separator(), mailbox_base_name)
 
         # Correct folder_path being supplied with "shared/shared/" for example
-        if folder_name.startswith("shared%s" % (self.imap.separator) * 2):
+        if folder_name.startswith("shared%s" % (self.get_separator()) * 2):
             folder_name = folder_name[7:]
 
         log.info(_("Creating new shared folder %s") %(mailbox_base_name))
@@ -429,10 +429,10 @@ class IMAP(object):
         """
             Check if a shared mailbox exists.
         """
-        folder_name = "shared%s%s" % (self.imap.separator, mailbox_base_name)
+        folder_name = "shared%s%s" % (self.get_separator(), mailbox_base_name)
 
         # Correct folder_path being supplied with "shared/shared/" for example
-        if folder_name.startswith("shared%s" % (self.imap.separator) * 2):
+        if folder_name.startswith("shared%s" % (self.get_separator()) * 2):
             folder_name = folder_name[7:]
 
         return self.has_folder(folder_name)
@@ -450,7 +450,7 @@ class IMAP(object):
             log.warning(_("Downcasing mailbox name %r") % (mailbox_base_name))
             mailbox_base_name = mailbox_base_name.lower()
 
-        folder_name = "user%s%s" % (self.imap.separator, mailbox_base_name)
+        folder_name = "user%s%s" % (self.get_separator(), mailbox_base_name)
         log.info(_("Creating new mailbox for user %s") %(mailbox_base_name))
 
         self.create_folder(folder_name, server)
@@ -634,9 +634,9 @@ class IMAP(object):
                 folder_name = additional_folder
 
             folder_name = "user%s%s%s%s%s" % (
-                    self.imap.separator,
+                    self.get_separator(),
                     localpart,
-                    self.imap.separator,
+                    self.get_separator(),
                     folder_name,
                     domain_suffix
                 )
@@ -660,7 +660,7 @@ class IMAP(object):
         """
         self.connect()
 
-        folder = "user%s%s" %(self.imap.separator,mailbox_base_name)
+        folder = "user%s%s" %(self.get_separator(),mailbox_base_name)
         self.delete_mailfolder(folder)
         self.cleanup_acls(mailbox_base_name)
 
@@ -672,7 +672,7 @@ class IMAP(object):
             log.warning(_("Downcasing mailbox name %r") % (mailbox_base_name))
             mailbox_base_name = mailbox_base_name.lower()
 
-        return self.has_folder('user%s%s' %(self.imap.separator, mailbox_base_name))
+        return self.has_folder('user%s%s' %(self.get_separator(), mailbox_base_name))
 
     def user_mailbox_quota(self, mailbox_quota):
         pass
@@ -684,6 +684,9 @@ class IMAP(object):
         if old_name == new_name and partition == None:
             return
 
+        if not self.has_folder(old_name):
+            log.error(_("INBOX folder to rename (%s) does not exist") % (old_name))
+
         if not self.has_folder(new_name) or not partition == None:
             log.info(_("Renaming INBOX from %s to %s") % (old_name,new_name))
             try:
@@ -1020,9 +1023,9 @@ class IMAP(object):
                 #if acceptable:
                     #folder_name = "%s@%s" % (folder.split(self.separator)[1].split('@')[0],folder.split('@')[1])
 
-                folder_name = "%s@%s" % (folder.split(self.imap.separator)[1].split('@')[0],folder.split('@')[1])
+                folder_name = "%s@%s" % (folder.split(self.get_separator())[1].split('@')[0],folder.split('@')[1])
             else:
-                folder_name = "%s" % (folder.split(self.imap.separator)[1])
+                folder_name = "%s" % (folder.split(self.get_separator())[1])
 
             if not folder_name == None:
                 if not folder_name in folders:


commit f7661c1904a3b2ca366cb31e690adabaf75950ed
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Wed Apr 23 12:02:15 2014 +0200

    LSUB with a pattern does not return the expected results at all

diff --git a/pykolab/cli/cmd_remove_user_subscription.py b/pykolab/cli/cmd_remove_user_subscription.py
index 17ff818..a09bb31 100644
--- a/pykolab/cli/cmd_remove_user_subscription.py
+++ b/pykolab/cli/cmd_remove_user_subscription.py
@@ -74,7 +74,7 @@ def execute(*args, **kw):
         sys.exit(1)
 
     _folders = imap.lm(folder_pattern)
-    _subscribed_folders = imap.lsub(folder_pattern)
+    _subscribed_folders = imap.lsub()
     unsubscribed_folders = []
 
     for _folder in _folders:
@@ -89,8 +89,8 @@ def execute(*args, **kw):
 
         print "\n".join(unsubscribed_folders)
     else:
-        print >> sys.stderr, _("User %s not be unsubscribed from any folders.") % (
+        print >> sys.stderr, _("User %s was not unsubscribed from any folders.") % (
                 user
             )
 
-        sys.exit(1)
\ No newline at end of file
+        sys.exit(1)




More information about the commits mailing list