Maildir repository: add config keys for IMAP keywords

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@gmail.com>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
Igor Almeida 2015-11-20 16:09:09 -03:00 committed by Nicolas Sebrecht
parent c52ca66874
commit 4e2de8f58a
2 changed files with 14 additions and 0 deletions

View File

@ -133,6 +133,9 @@ class BaseRepository(CustomConfig.ConfigHelperMixin, object):
def getsep(self): def getsep(self):
raise NotImplementedError raise NotImplementedError
def getkeywordmap(self):
raise NotImplementedError
def should_sync_folder(self, fname): def should_sync_folder(self, fname):
"""Should this folder be synced?""" """Should this folder be synced?"""

View File

@ -39,6 +39,14 @@ class MaildirRepository(BaseRepository):
if not os.path.isdir(self.root): if not os.path.isdir(self.root):
os.mkdir(self.root, 0o700) 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): def _append_folder_atimes(self, foldername):
"""Store the atimes of a folder's new|cur in self.folder_atimes""" """Store the atimes of a folder's new|cur in self.folder_atimes"""
@ -72,6 +80,9 @@ class MaildirRepository(BaseRepository):
def getsep(self): def getsep(self):
return self.getconf('sep', '.').strip() return self.getconf('sep', '.').strip()
def getkeywordmap(self):
return self.keyword2char
def makefolder(self, foldername): def makefolder(self, foldername):
"""Create new Maildir folder if necessary """Create new Maildir folder if necessary