offlineimap rev 527

"Automatic Subversion Change Mailer" <[email protected]> Sat, 26 Jul 2003 15:02:44 -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-26 15:02:28 -0500 (Sat, 26 Jul 2003)
New Revision: 527

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

Log:
The thing connects now.


Diff:
Modified: offlineimap/branches/twisted/offlineimap/accounts.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/accounts.py	2003-07-26 19:37:27 UTC (rev 526)
+++ offlineimap/branches/twisted/offlineimap/accounts.py	2003-07-26 20:02:28 UTC (rev 527)
@@ -247,7 +247,7 @@
                 ui.validityproblem(self.remotefolder,
                                    self.remotefolder.getsaveduidvalidity(),
                                    self.validities['remotefolder_uidvalidity'])
-                rause Exception, "Error: UID validity problem for remote folder."
+                raise Exception, "Error: UID validity problem for remote folder."
         else:
             self.localfolder.saveuidvalidity()
             self.remotefolder.saveuidvalidity()

Modified: offlineimap/branches/twisted/offlineimap/imapserver.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/imapserver.py	2003-07-26 19:37:27 UTC (rev 526)
+++ offlineimap/branches/twisted/offlineimap/imapserver.py	2003-07-26 20:02:28 UTC (rev 527)
@@ -23,11 +23,17 @@
 from twisted.protocols.imap4 import IMAP4Client
 from twisted.internet.ssl import ClientContextFactory
 
+class MyIMAP(IMAP4Client):
+    def connectionMade(self):
+        print "Connectionmade."
+        self.factory.imapserver.connectionMade(self)
 
+
 class IMAPClientFactory(protocol.ClientFactory):
-    protocol = IMAP4Client
+    protocol = MyIMAP
     def __init__(self, imapserver):
         self.imapserver = imapserver
+        print "Client factory instantiated."
         
     def startedConnection(self, connector):
         print "Started to connect"
@@ -38,10 +44,6 @@
     def clientconnectionFailed(self, connector, reason):
         print "Connection failed.  Reason:", reason
 
-class MyIMAP(IMAP4Client):
-    def connectionMade(self):
-        print "Connectionmade."
-        self.factory.imapserver.connectionMade(self)
 
 class IMAPFactory(protocol.ClientFactory):
     protocol = IMAP4Client
@@ -118,11 +120,15 @@
     def plainauth(self, imapobj):
         UIBase.getglobalui().debug('imap',
                                    'Attempting plain authentication')
+        print "imapobj is", imapobj
         d = imapobj.login(self.username, self.getpassword())
         d.addCallback(self.handOverConnection)
-        d.addErrback(self.plainauth, (imapobj,))
-        
+        d.addErrback(self.plainautherror, (imapobj,))
 
+    def plainautherror(self, error, imapobj):
+        UIBase.getglobalui().warn(str(error))
+        self.plainauth(imapobj)
+
     def acquireconnection(self):
         """Fetches a connection from the pool, making sure to create a new one
         if needed, to obey the maximum connection limits, etc.
@@ -138,6 +144,7 @@
             return d
 
         if self.usessl:
+            print "Using SSL."
             reactor.connectSSL(self.hostname, self.port,
                                IMAPClientFactory(self),
                                ClientContextFactory())
@@ -151,9 +158,9 @@
     def connectionMade(self, protocol):
         print "This is IMAPServer.connectionMade; handing over to plainauth"
         self.imapobj = protocol
-        self.plainAuth(protocol)
+        self.plainauth(protocol)
 
-    def handOverConnection(self):
+    def handOverConnection(self, d = None):
         print "This is IMAPServer.handOverConnection"
         self.connectiondefer.callback(self.imapobj)
         return

Modified: offlineimap/branches/twisted/offlineimap/repository/Base.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/repository/Base.py	2003-07-26 19:37:27 UTC (rev 526)
+++ offlineimap/branches/twisted/offlineimap/repository/Base.py	2003-07-26 20:02:28 UTC (rev 527)
@@ -18,6 +18,7 @@
 
 from offlineimap import CustomConfig
 import os.path
+from twisted.internet import defer
 
 def LoadRepository(name, account, reqtype):
     from offlineimap.repository.IMAP import IMAPRepository, MappedIMAPRepository
@@ -101,12 +102,19 @@
         """Syncs the folders in this repository to those in dest.
         It does NOT sync the contents of those folders."""
         src = self
-        srcfolders = src.getfolders()
-        destfolders = dest.getfolders()
+        maindefer = defer.Deferred()
+        d = src.getfolders()
+        d.addCallback(self.syncfoldersto_real1, (dest, maindefer))
+        return d
 
-        # Create hashes with the names, but convert the source folders
-        # to the dest folder's sep.
+    def syncfoldersto_real1(self, dest, maindefer, srcfolders):
+        d = dest.getfolders()
+        d.addCallback(self.syncfoldersto_real2, (dest, maindefer, srcfolders))
 
+    def syncfoldersto_real2(self, dest, maindefer, srcfolders,
+                            destfolders):
+        src = srlf
+
         srchash = {}
         for folder in srcfolders:
             srchash[folder.getvisiblename().replace(src.getsep(), dest.getsep())] = \
@@ -123,6 +131,8 @@
             if not key in desthash:
                 dest.makefolder(key)
 
+
+        d.callback()
         #
         # Find deleted folders.
         #

Modified: offlineimap/branches/twisted/offlineimap/repository/IMAP.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/repository/IMAP.py	2003-07-26 19:37:27 UTC (rev 526)
+++ offlineimap/branches/twisted/offlineimap/repository/IMAP.py	2003-07-26 20:02:28 UTC (rev 527)
@@ -133,6 +133,10 @@
             return self.folders
         retval = []
         imapobj = self.imapserver.acquireconnection()
+        imapobj.addCallback(self.getfolders_real)
+        return imapobj
+
+    def getfolders_real(self, imapobj):
         try:
             listresult = imapobj.list(directory = self.imapserver.reference)[1]
         finally: