[PATCH 1/3] Maildir repository: add config keys for IMAP keywords

Igor Almeida igor.contato at gmail.com
Sat Nov 7 14:16:53 GMT 2015


This commit assembles a dictionary mapping user-specified IMAP keywords
to Maildir lower-case flags, similar to Dovecot's format
http://wiki2.dovecot.org/MailboxFormat/Maildir

Configuration example:

[Repository Local]
type = Maildir
localfolders = ~/Maildir/
customflag_a = $label1
customflag_b = $Forwarded
customflag_c = Junk

Signed-off-by: Igor Almeida <igor.contato at gmail.com>
---
 offlineimap/repository/Base.py    |  3 +++
 offlineimap/repository/Maildir.py | 11 +++++++++++
 2 files changed, 14 insertions(+)

diff --git a/offlineimap/repository/Base.py b/offlineimap/repository/Base.py
index adae16d..8634628 100644
--- a/offlineimap/repository/Base.py
+++ b/offlineimap/repository/Base.py
@@ -133,6 +133,9 @@ class BaseRepository(CustomConfig.ConfigHelperMixin, object):
     def getsep(self):
         raise NotImplementedError
 
+    def getkeywordmap(self):
+        raise NotImplementedError
+
     def should_sync_folder(self, fname):
         """Should this folder be synced?"""
 
diff --git a/offlineimap/repository/Maildir.py b/offlineimap/repository/Maildir.py
index 0262ba2..fef57f3 100644
--- a/offlineimap/repository/Maildir.py
+++ b/offlineimap/repository/Maildir.py
@@ -39,6 +39,14 @@ class MaildirRepository(BaseRepository):
         if not os.path.isdir(self.root):
             os.mkdir(self.root, 0o700)
 
+        # Create the keyword->char mapping
+        self.keyword2char = dict()
+        for c in 'abcdefghijklmnopqrstuvwxyz':
+            confkey = 'customflag_' + c
+            keyword = self.getconf(confkey, None)
+            if keyword is not None:
+                self.keyword2char[keyword] = c
+
     def _append_folder_atimes(self, foldername):
         """Store the atimes of a folder's new|cur in self.folder_atimes"""
 
@@ -72,6 +80,9 @@ class MaildirRepository(BaseRepository):
     def getsep(self):
         return self.getconf('sep', '.').strip()
 
+    def getkeywordmap(self):
+        return self.keyword2char
+
     def makefolder(self, foldername):
         """Create new Maildir folder if necessary
 
-- 
2.5.3





More information about the OfflineIMAP-project mailing list