offlineimap rev 533

"Automatic Subversion Change Mailer" <[email protected]> Sun, 27 Jul 2003 18:39:52 -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 18:39:47 -0500 (Sun, 27 Jul 2003)
New Revision: 533

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

Log:
More progress, working on cachemessagelist


Diff:
Modified: offlineimap/branches/twisted/offlineimap/accounts.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/accounts.py	2003-07-27 23:31:15 UTC (rev 532)
+++ offlineimap/branches/twisted/offlineimap/accounts.py	2003-07-27 23:39:47 UTC (rev 533)
@@ -261,12 +261,12 @@
             self.remotefolder.saveuidvalidity()
 
         # Load remote folder.
-        ui.loadmessagelist(self.remoterepos, self.remotefolder)
+        self.ui.loadmessagelist(self.remoterepos, self.remotefolder)
         return self.remotefolder.cachemessagelist()
 
 
     def check_local_deleted(self, d):
-        ui.messagelistloaded(self.remoterepos, self.remotefolder,
+        self.ui.messagelistloaded(self.remoterepos, self.remotefolder,
                              len(self.remotefolder.getmessagelist().keys()))
 
 
@@ -291,14 +291,14 @@
             
     def sync_remote_changes(self, d):
         # Synchronize remote changes.
-        ui.syncingmessages(self.remoterepos, self.remotefolder,
+        self.ui.syncingmessages(self.remoterepos, self.remotefolder,
                            self.localrepos, self.localfolder)
         return remotefolder.syncmessagesto(localfolder,
                                            [localfolder, statusfolder])
 
     def sync_status(self, d):
         # Make sure the status folder is up-to-date.
-        ui.syncingmessages(self.localrepos, self.localfolder,
+        self.ui.syncingmessages(self.localrepos, self.localfolder,
                            self.statusrepos, self.statusfolder)
         return self.localfolder.syncmessagesto(self.statusfolder)
 

Modified: offlineimap/branches/twisted/offlineimap/folder/Base.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/folder/Base.py	2003-07-27 23:31:15 UTC (rev 532)
+++ offlineimap/branches/twisted/offlineimap/folder/Base.py	2003-07-27 23:39:47 UTC (rev 533)
@@ -19,6 +19,7 @@
 from threading import *
 from offlineimap.ui import UIBase
 import os.path, re
+from offlineimap.imaputil import rd
 
 class BaseFolder:
     def __init__(self):

Modified: offlineimap/branches/twisted/offlineimap/folder/IMAP.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/folder/IMAP.py	2003-07-27 23:31:15 UTC (rev 532)
+++ offlineimap/branches/twisted/offlineimap/folder/IMAP.py	2003-07-27 23:39:47 UTC (rev 533)
@@ -19,7 +19,7 @@
 from Base import BaseFolder
 from offlineimap import imaputil
 from offlineimap.ui import UIBase
-import rfc822, time, string, random, binascii, re
+import rfc822, time, string, random, binascii, re, sys
 from StringIO import StringIO
 from copy import copy
 
@@ -57,35 +57,40 @@
     def getuidvalidity(self):
         imapobj = self.imapserver.acquireconnection()
         try:
-            # Primes untagged_responses
-            imapobj.select(self.getfullname(), readonly = 1)
-            return long(imapobj.untagged_responses['UIDVALIDITY'][0])
+            d = imapobj.examine(self.getfullname())
+            d.addCallback(lambda x: x['UIDVALIDITY'])
+            return d
+            #return long(imapobj.untagged_responses['UIDVALIDITY'][0])
         finally:
             self.imapserver.releaseconnection(imapobj)
     
     def cachemessagelist(self):
         imapobj = self.imapserver.acquireconnection()
+        maindefer = defer.Deferred()
+        d = imapobj.examine(self.getfullname())
+        d.addCallback(self.cachemessagelist_worker, maindefer)
+        return maindefer
+
+    def cachemessagelist_worker(self, examineresult, maindefer):
         self.messagelist = {}
 
         try:
-            # Primes untagged_responses
-            imapobj.select(self.getfullname(), readonly = 1, force = 1)
-            try:
-                # Some mail servers do not return an EXISTS response if
-                # the folder is empty.
-                maxmsgid = long(imapobj.untagged_responses['EXISTS'][0])
-            except KeyError:
-                return
-            if maxmsgid < 1:
-                # No messages; return
-                return
+            # Some mail servers do not return an EXISTS response if
+            # the folder is empty.
+            maxmsgid = long(examineresult['EXISTS'])
+        except KeyError:
+            maindefer.callback(None)
+            return
+        if maxmsgid < 1:
+            # No messages; return
+            maindefer.callback(None)
+            return
 
-            # Now, get the flags and UIDs for these.
-            # We could conceivably get rid of maxmsgid and just say
-            # '1:*' here.
-            response = imapobj.fetch('1:%d' % maxmsgid, '(FLAGS UID)')[1]
-        finally:
-            self.imapserver.releaseconnection(imapobj)
+        # Now, get the flags and UIDs for these.
+        # We could conceivably get rid of maxmsgid and just say
+        # '1:*' here.
+        # FIXME: START HERE
+        response = imapobj.fetch('1:%d' % maxmsgid, '(FLAGS UID)')[1]
         for messagestr in response:
             # Discard the message number.
             messagestr = string.split(messagestr, maxsplit = 1)[1]