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)