offlineimap rev 528

"Automatic Subversion Change Mailer" <[email protected]> Sun, 27 Jul 2003 15:58:17 -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-27 15:57:59 -0500 (Sun, 27 Jul 2003)
New Revision: 528

Modified:
  offlineimap/branches/twisted/offlineimap/accounts.py
  offlineimap/branches/twisted/offlineimap/folder/Base.py
  offlineimap/branches/twisted/offlineimap/imapserver.py
  offlineimap/branches/twisted/offlineimap/imaputil.py
  offlineimap/branches/twisted/offlineimap/repository/Base.py
  offlineimap/branches/twisted/offlineimap/repository/IMAP.py

Log:
Committed more updates towards twistedification.

At this time, it is now capable of establishing a single connection to the
server and downloading a list of folders.


Diff:
Modified: offlineimap/branches/twisted/offlineimap/accounts.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/accounts.py	2003-07-26 20:02:28 UTC (rev 527)
+++ offlineimap/branches/twisted/offlineimap/accounts.py	2003-07-27 20:57:59 UTC (rev 528)
@@ -108,7 +108,15 @@
 
         # Connect to the local cache.
         self.statusrepos = offlineimap.repository.LocalStatus.LocalStatusRepository(self.getconf('localrepository'), self)
-            
+
+        # hack#
+
+        print "This is accounts.py 114 before initconnection"
+        d = self.remoterepos.imapserver.initconnection()
+        d.addCallback(self.nextstep)
+
+    def nextstep(self, d):
+        print "In nextstep"
         if not self.refreshperiod:
             self.sync()
             self.ui.acctdone(self.name)

Modified: offlineimap/branches/twisted/offlineimap/folder/Base.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/folder/Base.py	2003-07-26 20:02:28 UTC (rev 527)
+++ offlineimap/branches/twisted/offlineimap/folder/Base.py	2003-07-27 20:57:59 UTC (rev 528)
@@ -25,7 +25,7 @@
 class BaseFolder:
     def __init__(self):
         self.uidlock = Lock()
-        
+
     def getname(self):
         """Returns name"""
         return self.name
@@ -121,7 +121,9 @@
     def cachemessagelist(self):
         """Reads the message list from disk or network and stores it in
         memory for later use.  This list will not be re-read from disk or
-        memory unless this function is called again."""
+        memory unless this function is called again.
+
+        Returns Deferred."""
         raise NotImplementedException
 
     def getmessagelist(self):

Modified: offlineimap/branches/twisted/offlineimap/imapserver.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/imapserver.py	2003-07-26 20:02:28 UTC (rev 527)
+++ offlineimap/branches/twisted/offlineimap/imapserver.py	2003-07-27 20:57:59 UTC (rev 528)
@@ -137,6 +137,10 @@
 
         print "Acquireconnection called."
         # FIXME: stub for now.
+        return self.imapobj
+
+    def initconnection(self):
+        print "initconection called."
         d = defer.Deferred()
         if hasattr(self, 'imapobj'):
             print "Acquireconnection returning existing object."
@@ -163,6 +167,7 @@
     def handOverConnection(self, d = None):
         print "This is IMAPServer.handOverConnection"
         self.connectiondefer.callback(self.imapobj)
+        del self.connectiondefer
         return
         
         self.semaphore.acquire()
@@ -345,3 +350,4 @@
                                 user, password, host, port, ssl,
                                 self.repos.getmaxconnections(),
                                 reference = reference)
+

Modified: offlineimap/branches/twisted/offlineimap/imaputil.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/imaputil.py	2003-07-26 20:02:28 UTC (rev 527)
+++ offlineimap/branches/twisted/offlineimap/imaputil.py	2003-07-27 20:57:59 UTC (rev 528)
@@ -18,6 +18,8 @@
 
 import re, string, types
 from offlineimap.ui import UIBase
+from twisted.internet import defer
+
 quotere = re.compile('^("(?:[^"]|\\\\")*")')
 
 def debug(*args):
@@ -26,6 +28,12 @@
         msg.append(str(arg))
     UIBase.getglobalui().debug('imap', " ".join(msg))
 
+def rd(val):
+    """Utility function to retern a deferred with its value set to val."""
+    d = defer.Deferred()
+    d.callback(val)
+    return d
+
 def dequote(string):
     """Takes a string which may or may not be quoted and returns it, unquoted.
     This function does NOT consider parenthised lists to be quoted.

Modified: offlineimap/branches/twisted/offlineimap/repository/Base.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/repository/Base.py	2003-07-26 20:02:28 UTC (rev 527)
+++ offlineimap/branches/twisted/offlineimap/repository/Base.py	2003-07-27 20:57:59 UTC (rev 528)
@@ -107,11 +107,13 @@
         d.addCallback(self.syncfoldersto_real1, (dest, maindefer))
         return d
 
-    def syncfoldersto_real1(self, dest, maindefer, srcfolders):
+    def syncfoldersto_real1(self,
+                            srcfolders, args):
+        dest, maindefer = args
         d = dest.getfolders()
         d.addCallback(self.syncfoldersto_real2, (dest, maindefer, srcfolders))
 
-    def syncfoldersto_real2(self, dest, maindefer, srcfolders,
+    def syncfoldersto_real2(self, d, dest, maindefer, srcfolders,
                             destfolders):
         src = srlf
 

Modified: offlineimap/branches/twisted/offlineimap/repository/IMAP.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/repository/IMAP.py	2003-07-26 20:02:28 UTC (rev 527)
+++ offlineimap/branches/twisted/offlineimap/repository/IMAP.py	2003-07-27 20:57:59 UTC (rev 528)
@@ -131,33 +131,31 @@
     def getfolders(self):
         if self.folders != None:
             return self.folders
-        retval = []
         imapobj = self.imapserver.acquireconnection()
-        imapobj.addCallback(self.getfolders_real)
-        return imapobj
+        #imapobj.addCallback(self.getfolders_real)
+        #return imapobj
+        # FIXME: use self.imapserver.reference
+        print "Reference: '%s'" % self.imapserver.reference
+        d = imapobj.list('', '*')
+        d.addCallback(self.getfolders_real)
+        return d
 
-    def getfolders_real(self, imapobj):
-        try:
-            listresult = imapobj.list(directory = self.imapserver.reference)[1]
-        finally:
-            self.imapserver.releaseconnection(imapobj)
-        for string in listresult:
-            if string == None or \
-                   (type(string) == types.StringType and string == ''):
-                # Bug in imaplib: empty strings in results from
-                # literals.
-                continue
-            flags, delim, name = imaputil.imapsplit(string)
-            flaglist = [x.lower() for x in imaputil.flagsplit(flags)]
+    def getfolders_real(self, listresult):
+        retval = []
+        for flags, delim, name in listresult:
+            print type(flags)
+            print type(delim)
+            print type(name)
+            print flags, delim, name
+            flaglist = [x.lower() for x in flags]
             if '\\noselect' in flaglist:
                 continue
-            foldername = imaputil.dequote(name)
-            if not self.folderfilter(foldername):
+            if not self.folderfilter(name):
                 continue
-            retval.append(self.getfoldertype()(self.imapserver, foldername,
-                                               self.nametrans(foldername),
+            retval.append(self.getfoldertype()(self.imapserver, name,
+                                               self.nametrans(name),
                                                self.accountname, self))
-        if len(self.folderincludes):
+        if len(self.folderincludes):    # FIXME
             imapobj = self.imapserver.acquireconnection()
             try:
                 for foldername in self.folderincludes: