<DKIM> [PATCH 2/3] IMAP folder: expose the message keywords
Nicolas Sebrecht
nicolas.s-dev at laposte.net
Sat Nov 7 17:52:01 GMT 2015
On Sat, Nov 07, 2015 at 11:16:54AM -0300, Igor Almeida wrote:
> The keywords are in the flag string, so imaputil can just strip the
> usual \Flags.
>
> Signed-off-by: Igor Almeida <igor.contato at gmail.com>
> ---
> offlineimap/folder/Base.py | 5 +++++
> offlineimap/folder/IMAP.py | 8 +++++++-
> offlineimap/imaputil.py | 8 ++++++++
> 3 files changed, 20 insertions(+), 1 deletion(-)
>
> diff --git a/offlineimap/folder/Base.py b/offlineimap/folder/Base.py
> index d2a0706..5031a40 100644
> --- a/offlineimap/folder/Base.py
> +++ b/offlineimap/folder/Base.py
> @@ -420,6 +420,11 @@ class BaseFolder(object):
>
> raise NotImplementedError
>
> + def getmessagekeywords(self, uid):
> + """Returns the keywords for the specified message."""
> +
> + raise NotImplementedError
> +
> def savemessageflags(self, uid, flags):
> """Sets the specified message's flags to the given set.
>
> diff --git a/offlineimap/folder/IMAP.py b/offlineimap/folder/IMAP.py
> index 60b5301..7f0fd6d 100644
> --- a/offlineimap/folder/IMAP.py
> +++ b/offlineimap/folder/IMAP.py
> @@ -251,8 +251,10 @@ class IMAPFolder(BaseFolder):
> uid = long(options['UID'])
> self.messagelist[uid] = self.msglist_item_initializer(uid)
> flags = imaputil.flagsimap2maildir(options['FLAGS'])
> + keywords = imaputil.flagsimap2keywords(options['FLAGS'])
> rtime = imaplibutil.Internaldate2epoch(messagestr)
> - self.messagelist[uid] = {'uid': uid, 'flags': flags, 'time': rtime}
> + self.messagelist[uid] = {'uid': uid, 'flags': flags, 'time': rtime,
> + 'keywords': keywords}
The IMAP server may not accept the provided keywords.
I can think of 3 cases right now:
- the server don't allow Keywords at all;
- the server only allow pre-defined Keywords;
- the server allows creating new Keywords (see PERMANTENTFLAGS).
I guess it's fine to assume that Keywords are permanents for now, but we
have to check if the server allows creating new Keywords. Otherwise, the
server will reply with 'NO' to commands like APPEND.
IOW, we have to honor PERMANTENTFLAGS cleanly.
--
Nicolas Sebrecht
More information about the OfflineIMAP-project
mailing list