Plugin IMAP, plugin MAILDIR: added IMAP's UID management, mailbox data persistence

This commit is contained in:
Goffi 2011-01-17 04:23:31 +01:00
commit e14f357b95

View file

@ -85,6 +85,7 @@ class Message():
"""Retrieve the unique identifier associated with this message.
"""
debug('getUID (message)')
debug ('===>%i', self.uid)
return self.uid
def getFlags(self):
@ -176,7 +177,7 @@ class SatMailbox:
"""Return the likely UID for the next message added to this mailbox.
"""
debug ('getUIDNext')
return self.getMessageCount()+1
return self.mailbox.getNextUid()
def getUID(self,message):
"""Return the UID of a message in the mailbox
@ -184,7 +185,7 @@ class SatMailbox:
@return: The UID of the message.
"""
debug ('getUID')
return self.mailbox.getId(message)
return self.mailbox.getUid(message)
def getMessageCount(self):
"""Return the number of messages in this mailbox.
@ -285,11 +286,24 @@ class SatMailbox:
@param uid: If true, the IDs specified in the query are UIDs;
"""
debug('fetch (%s, %s)'%(messages,uid))
messages.last = self.getMessageCount()
for mes_idx in messages:
if mes_idx>self.getMessageCount():
continue
yield (mes_idx,Message(mes_idx,self.mailbox.getMessage(mes_idx-1)))
if uid:
messages.last = self.mailbox.getMaxUid()
messages.getnext = self.mailbox.getNextExistingUid
for mess_uid in messages:
if mess_uid == None:
debug ('stopping iteration')
raise StopIteration
try:
debug ('yielding (%s,%s)' % (mess_uid,Message(mess_uid,self.mailbox.getMessageUid(mess_uid))))
yield (mess_uid,Message(mess_uid,self.mailbox.getMessageUid(mess_uid)))
except IndexError:
continue
else:
messages.last = self.getMessageCount()
for mess_idx in messages:
if mess_idx>self.getMessageCount():
raise StopIteration
yield (mess_idx,Message(mess_idx,self.mailbox.getMessage(mess_idx-1)))
def store(self, messages, flags, mode, uid):
"""Set the flags of one or more messages.