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

Igor Almeida igor.contato at gmail.com
Sun Nov 8 18:50:44 UTC 2015


Hi,

Thanks for reviewing. Comments below

On 11/07/2015 02:52 PM, Nicolas Sebrecht wrote:
> 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.
> 
Are you talking about an IMAP -> IMAP sync? If so, that could be true
for the destination server, but this patchset does not implement this
use case.
In my use case, IMAP -> Maildir, the flags are already there and we're
just translating them to lower-case letters.

> 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.
> 

-- 
Igor Almeida



More information about the OfflineIMAP-project mailing list