offlineimap rev 546

"Automatic Subversion Change Mailer" <[email protected]> Tue, 29 Jul 2003 10:39:50 -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-29 10:39:31 -0500 (Tue, 29 Jul 2003)
New Revision: 546

Modified:
  offlineimap/branches/twisted/TODO
  offlineimap/branches/twisted/offlineimap/folder/Base.py
  offlineimap/branches/twisted/offlineimap/imapserver.py
  offlineimap/branches/twisted/offlineimap/imaputil.py

Log:
OK, finally managed to fix the weird calling arguments problem.


Diff:
Modified: offlineimap/branches/twisted/TODO
==============================================================================
--- offlineimap/branches/twisted/TODO	2003-07-29 03:00:54 UTC (rev 545)
+++ offlineimap/branches/twisted/TODO	2003-07-29 15:39:31 UTC (rev 546)
@@ -1 +1,4 @@
 Test with multiple folders
+
+
+folder/Base should not use deferreds for saveuidvalidity()

Modified: offlineimap/branches/twisted/offlineimap/folder/Base.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/folder/Base.py	2003-07-29 03:00:54 UTC (rev 545)
+++ offlineimap/branches/twisted/offlineimap/folder/Base.py	2003-07-29 15:39:31 UTC (rev 546)
@@ -81,14 +81,18 @@
 
     def isuidvalidityok(self):
         if self.getsaveduidvalidity() != None:
-            retval = self.getsaveduidvalidity() == self.getuidvalidity()
-            return rd(retval)
+            d = self.getuidvalidity()
+            d.addCallback(self.isuidvalidityok_worker)
+            return d
         else:
             d = self.saveuidvalidity()
             # This has the effect of returning '1' to the caller.
             d.addCallback(lambda x: 1)
             return d
 
+    def isuidvalidityok_worker(self, uidvalidity):
+        return self.getsaveduidvalidity() == uidvalidity
+
     def _getuidfilename(self):
         return os.path.join(self.repository.getuiddir(),
                             self.getfolderbasename())

Modified: offlineimap/branches/twisted/offlineimap/imapserver.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/imapserver.py	2003-07-29 03:00:54 UTC (rev 545)
+++ offlineimap/branches/twisted/offlineimap/imapserver.py	2003-07-29 15:39:31 UTC (rev 546)
@@ -212,6 +212,7 @@
         return connection
 
     def _printconnectionstate(self):
+        return
         print "PRINTCONNECTIONSTATE"
         #import traceback
         #traceback.print_stack()
@@ -227,6 +228,9 @@
         self.assignedconnections.remove(connection)
         # And hand it off to the next consumer or queue
         self._handleAvailableConnection(connection)
+        # It's important to return stuff, because this is also an errBack.
+        # If stuff is not returned, the Failure object, and thus the error,
+        # would be lost.
         return stuff
 
     def _handleAvailableConnection(self, connection):

Modified: offlineimap/branches/twisted/offlineimap/imaputil.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/imaputil.py	2003-07-29 03:00:54 UTC (rev 545)
+++ offlineimap/branches/twisted/offlineimap/imaputil.py	2003-07-29 15:39:31 UTC (rev 546)
@@ -16,6 +16,8 @@
 #    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
+from __future__ import nested_scopes
+
 import re, string, types
 from offlineimap.ui import UIBase
 from twisted.internet import defer
@@ -195,14 +197,6 @@
 
     return ",".join(retval)
 
-def helper(self, destfunc, args, kwargs):
-    print "Helper called.  self=", self, "destfunc=", destfunc, "args=", args, "kwargs=", kwargs
-    d = defer.Deferred()
-    d.addCallback(destfunc, *args, **kwargs)
-
-    self.imapserver.acquireconnection(d)
-    return d
-
 class AcquireMixin:
     def _initAcquires(self):
         acquirelist = []
@@ -211,7 +205,28 @@
             if match:
                 acquirelist.append(match.group(1))
         for name in acquirelist:
-            newname = '_' + name + '_acquired'
-            func = lambda self, *args, **kwargs: \
-               helper(self, getattr(self, newname), args, kwargs)
-            setattr(self.__class__, name, func)
+            self._setupAcquire(name)
+
+    def _setupAcquire(self, name):
+        # This did not work at part of the above function.
+        # FIXME: this can probably be returned to the lambda form
+        # and stuff can be removed below.
+        newname = '_' + name + '_acquired'
+        destfunc = getattr(self, newname)
+
+        def func(*args, **kwargs):
+            return self._acquireHelper(destfunc, args, kwargs)
+
+        #func = lambda *args, **kwargs: \
+        #   self._acquireHelper(destfunc, args, kwargs)
+        setattr(self, name, func)
+
+    def _acquireHelper(self, destfunc, args, kwargs):
+        #import traceback
+        #traceback.print_stack()
+        d = defer.Deferred()
+        d.addCallback(destfunc, *args, **kwargs)
+
+        self.imapserver.acquireconnection(d)
+        return d
+