<DKIM> [PATCH 2/3] IMAP folder: expose the message keywords

Nicolas Sebrecht nicolas.s-dev at laposte.net
Sat Nov 7 17:52:01 UTC 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