Refactoring of cyrus stored acls formatting - now performed by FileIterator where...
[imap-restore-mail] / src / mail_iterator.py
index e46c312..ccd5706 100644 (file)
@@ -107,31 +107,19 @@ class MailIterator:
 
         return
 
-    def add_acls(self, mailbox, mailbox_list, original_user, target_user):
+    def add_acls(self, mailbox, mb_acls, original_user, target_user):
         """Add acls to mailbox."""
 
-        # change encoding to internal cyrus format and make folder absolute
-        mailbox = mailbox.replace("INBOX/", "user/" + original_user + "/")
-        mailbox = mailbox.replace(".", "^")
-        mailbox = mailbox.replace("/", ".")
-
-        # find folder to set all acls
-        try:
-            mbox_acls = mailbox_list[mailbox]
-        except KeyError:
-            # no rights for the mailbox were found
-            logging.warning("Could not find the acls for mailbox %s for user %s.", mailbox, original_user)
-            return
-        for acl_user in mbox_acls:
+        for acl_user in mb_acls:
             # (in case target user != original user):
             # - don't overwrite acls eventually set for the current targetuser
             # - don't set the default owner acls for the new folder
             if acl_user != target_user and acl_user != original_user:
                 try:
-                    self.mail_con.setacl(mailbox, acl_user, mbox_acls[acl_user])
-                    logging.debug("Set acls %s for user %s on mailbox %s", mbox_acls[acl_user], acl_user, mailbox)
+                    self.mail_con.setacl(mailbox, acl_user, mb_acls[acl_user])
+                    logging.debug("Set acls %s for user %s on mailbox %s", mb_acls[acl_user], acl_user, mailbox)
                 except self.mail_con.error as ex:
-                    logging.warning("Could not set acls %s for user %s on mailbox %s: %s", mbox_acls[acl_user], acl_user, mailbox, ex)    
+                    logging.warning("Could not set acls %s for user %s on mailbox %s: %s", mb_acls[acl_user], acl_user, mailbox, ex)    
 
         return
 
@@ -141,7 +129,7 @@ class MailIterator:
         for mailbox in self.mailboxes:
             pattern = '^\"?' + deleted_mailbox
             # if INBOX it cannot be deleted so add delimiter
-            if (deleted_mailbox == "INBOX"):
+            if deleted_mailbox == "INBOX":
                 pattern += mailbox[1]
             if re.compile(pattern).match(mailbox[2]):
                 result, data = self.mail_con.delete(mailbox[2])
@@ -153,8 +141,8 @@ class MailIterator:
         return
 
     def create_mailbox(self, mailbox):
-
         """Create new mailbox to inject messages."""
+
         if mailbox != "INBOX":
             result, data = self.mail_con.create(mailbox)
             if result == "OK":
@@ -165,8 +153,8 @@ class MailIterator:
         return
 
     def inject_message(self, message, mailbox, internal_date):
-
         """Inject a message into a mailbox."""
+
         result, data = self.mail_con.append(mailbox, "\\Seen", internal_date, message.encode())
         if result == "OK":
             logging.debug("Appending message to mailbox %s", mailbox)