offlineimap rev 537
"Automatic Subversion Change Mailer" <[email protected]> Mon, 28 Jul 2003 10:10:37 -0500 (CDT)
| Newsgroups | gmane.mail.imap.offlineimap.subversion |
|---|---|
| Message-ID | <[email protected]> |
You are receiving this message because
all commits get sent to this address.
Author: jgoerzen
Date: 2003-07-28 10:10:21 -0500 (Mon, 28 Jul 2003)
New Revision: 537
Modified:
offlineimap/branches/twisted/offlineimap/folder/Base.py
offlineimap/branches/twisted/offlineimap/folder/IMAP.py
offlineimap/branches/twisted/offlineimap/folder/LocalStatus.py
offlineimap/branches/twisted/offlineimap/folder/Maildir.py
Log:
More coding Twisted.
Diff:
Modified: offlineimap/branches/twisted/offlineimap/folder/Base.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/folder/Base.py 2003-07-28 13:21:54 UTC (rev 536)
+++ offlineimap/branches/twisted/offlineimap/folder/Base.py 2003-07-28 15:10:21 UTC (rev 537)
@@ -165,43 +165,59 @@
raise NotImplementedException
def savemessageflags(self, uid, flags):
- """Sets the specified message's flags to the given set."""
+ """Sets the specified message's flags to the given set.
+
+ Returns Deferred."""
raise NotImplementedException
def addmessageflags(self, uid, flags):
"""Adds the specified flags to the message's flag set. If a given
- flag is already present, it will not be duplicated."""
+ flag is already present, it will not be duplicated.
+
+ Returns Deferred."""
newflags = self.getmessageflags(uid)
for flag in flags:
if not flag in newflags:
newflags.append(flag)
newflags.sort()
- self.savemessageflags(uid, newflags)
+ return self.savemessageflags(uid, newflags)
def addmessagesflags(self, uidlist, flags):
+ """Returns Deferred."""
+ deferreds = []
for uid in uidlist:
- self.addmessageflags(uid, flags)
+ deferreds.append(self.addmessageflags(uid, flags))
+ return defer.DeferredList(deferreds)
def deletemessageflags(self, uid, flags):
"""Removes each flag given from the message's flag set. If a given
- flag is already removed, no action will be taken for that flag."""
+ flag is already removed, no action will be taken for that flag.
+
+ Returns Deferred."""
newflags = self.getmessageflags(uid)
for flag in flags:
if flag in newflags:
newflags.remove(flag)
newflags.sort()
- self.savemessageflags(uid, newflags)
+ return self.savemessageflags(uid, newflags)
def deletemessagesflags(self, uidlist, flags):
+ """Returns Deferred."""
+ deffereds = []
for uid in uidlist:
- self.deletemessageflags(uid, flags)
+ deffereds.append(self.deletemessageflags(uid, flags))
+ return defer.DefferedList(deferreds)
def deletemessage(self, uid):
+ """Returns Deferred."""
raise NotImplementedException
def deletemessages(self, uidlist):
+ """Returns Deferred."""
+ deferreds = []
for uid in uidlist:
- self.deletemessage(uid)
+ deferreds.append(self.deletemessage(uid))
+ return defer.DeferredList(deferreds)
def syncmessagesto_neguid_msg(self, uid, dest, applyto, register = 1):
if register:
@@ -322,7 +338,7 @@
Look for message present in dest but not in self.
If any, delete them.
- Returns a deferred #FIXME: START HERE"""
+ Returns a deferred"""
deletelist = []
for uid in dest.getmessagelist().keys():
if uid < 0:
@@ -331,8 +347,11 @@
deletelist.append(uid)
if len(deletelist):
UIBase.getglobalui().deletingmessages(deletelist, applyto)
+ deferreds = []
for object in applyto:
- object.deletemessages(deletelist)
+ deferreds.append(object.deletemessages(deletelist))
+ return defer.DeferredList(deferreds)
+ return rd(None)
def syncmessagesto_flags(self, dest, applyto):
"""Pass 4 of folder synchronization.
Modified: offlineimap/branches/twisted/offlineimap/folder/IMAP.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/folder/IMAP.py 2003-07-28 13:21:54 UTC (rev 536)
+++ offlineimap/branches/twisted/offlineimap/folder/IMAP.py 2003-07-28 15:10:21 UTC (rev 537)
@@ -284,22 +284,22 @@
self.messagelist[uid]['flags'] = imaputil.flagsimap2maildir(flags)
def addmessageflags(self, uid, flags):
- self.addmessagesflags([uid], flags)
+ return self.addmessagesflags([uid], flags)
def addmessagesflags_noconvert(self, uidlist, flags):
- self.processmessagesflags('+', uidlist, flags)
+ return self.processmessagesflags('+', uidlist, flags)
def addmessagesflags(self, uidlist, flags):
"""This is here for the sake of UIDMaps.py -- deletemessages must
add flags and get a converted UID, and if we don't have noconvert,
then UIDMaps will try to convert it twice."""
- self.addmessagesflags_noconvert(uidlist, flags)
+ return self.addmessagesflags_noconvert(uidlist, flags)
def deletemessageflags(self, uid, flags):
- self.deletemessagesflags([uid], flags)
+ return self.deletemessagesflags([uid], flags)
def deletemessagesflags(self, uidlist, flags):
- self.processmessagesflags('-', uidlist, flags)
+ return self.processmessagesflags('-', uidlist, flags)
def processmessagesflags(self, operation, uidlist, flags):
imapobj = self.imapserver.acquireconnection()
@@ -349,29 +349,38 @@
self.messagelist[uid]['flags'].remove(flag)
def deletemessage(self, uid):
- self.deletemessages_noconvert([uid])
+ return self.deletemessages_noconvert([uid])
def deletemessages(self, uidlist):
- self.deletemessages_noconvert(uidlist)
+ return self.deletemessages_noconvert(uidlist)
def deletemessages_noconvert(self, uidlist):
# Weed out ones not in self.messagelist
uidlist = [uid for uid in uidlist if uid in self.messagelist]
if not len(uidlist):
- return
+ return rd(None)
- self.addmessagesflags_noconvert(uidlist, ['T'])
- imapobj = self.imapserver.acquireconnection()
- try:
+ dflags = self.addmessagesflags_noconvert(uidlist, ['T'])
+ if self.expunge:
+ # FIXME
+ imapobj = self.imapserver.acquireconnection()
try:
- imapobj.select(self.getfullname())
- except imapobj.readonly:
- UIBase.getglobalui().deletereadonly(self, uidlist)
- return
- if self.expunge:
- assert(imapobj.expunge()[0] == 'OK')
- finally:
- self.imapserver.releaseconnection(imapobj)
+ dflags.addCallback(lambda ignore, io, folder: io.select(folder),
+ imapobj, self.getfullname())
+ # FIXME: handle readonly
+ #except imapobj.readonly:
+ # UIBase.getglobalui().deletereadonly(self, uidlist)
+ # return
+ dflags.addCallback(lambda ignore, io: io.expunge(),
+ imapobj)
+ finally:
+ self.imapserver.releaseconnection(imapobj)
+
+ dflags.addCallback(self.deletemessage_noconvert_worker,
+ uidlist)
+ return dflags
+
+ def deletemessage_noconvert_worker(self, ignore, uidlist):
for uid in uidlist:
del self.messagelist[uid]
Modified: offlineimap/branches/twisted/offlineimap/folder/LocalStatus.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/folder/LocalStatus.py 2003-07-28 13:21:54 UTC (rev 536)
+++ offlineimap/branches/twisted/offlineimap/folder/LocalStatus.py 2003-07-28 15:10:21 UTC (rev 537)
@@ -18,6 +18,7 @@
from Base import BaseFolder
import os, threading
+from offlineimap.imaputil import rd
magicline = "OFFLINEIMAP LocalStatus CACHE DATA - DO NOT MODIFY - FORMAT 1"
@@ -75,6 +76,7 @@
flags = [x for x in flags]
self.messagelist[uid] = {'uid': uid, 'flags': flags}
file.close()
+ return rd(None)
def autosave(self):
if self.doautosave:
@@ -120,6 +122,8 @@
def deletemessage(self, uid):
if not uid in self.messagelist:
- return
+ return rd(None)
del(self.messagelist[uid])
self.autosave()
+ return rd(None)
+
Modified: offlineimap/branches/twisted/offlineimap/folder/Maildir.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/folder/Maildir.py 2003-07-28 13:21:54 UTC (rev 536)
+++ offlineimap/branches/twisted/offlineimap/folder/Maildir.py 2003-07-28 15:10:21 UTC (rev 537)
@@ -209,7 +209,7 @@
def deletemessage(self, uid):
if not uid in self.messagelist:
- return
+ return rd(None)
filename = self.messagelist[uid]['filename']
try:
os.unlink(filename)
@@ -220,4 +220,4 @@
os.unlink(newmsglist[uid]['filename'])
# Yep -- return.
del(self.messagelist[uid])
-
+ return rd(None)