offlineimap rev 534

"Automatic Subversion Change Mailer" <[email protected]> Sun, 27 Jul 2003 19:42:30 -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 19:42:25 -0500 (Sun, 27 Jul 2003)
New Revision: 534

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

Log:
Fixed up cachemessage list, at least preliminarily.


Diff:
Modified: offlineimap/branches/twisted/offlineimap/accounts.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/accounts.py	2003-07-27 23:39:47 UTC (rev 533)
+++ offlineimap/branches/twisted/offlineimap/accounts.py	2003-07-28 00:42:25 UTC (rev 534)
@@ -293,8 +293,9 @@
         # Synchronize remote changes.
         self.ui.syncingmessages(self.remoterepos, self.remotefolder,
                            self.localrepos, self.localfolder)
-        return remotefolder.syncmessagesto(localfolder,
-                                           [localfolder, statusfolder])
+        return self.remotefolder.syncmessagesto(self.localfolder,
+                                                [self.localfolder,
+                                                 self.statusfolder])
 
     def sync_status(self, d):
         # Make sure the status folder is up-to-date.

Modified: offlineimap/branches/twisted/offlineimap/folder/IMAP.py
==============================================================================
--- offlineimap/branches/twisted/offlineimap/folder/IMAP.py	2003-07-27 23:39:47 UTC (rev 533)
+++ offlineimap/branches/twisted/offlineimap/folder/IMAP.py	2003-07-28 00:42:25 UTC (rev 534)
@@ -22,8 +22,8 @@
 import rfc822, time, string, random, binascii, re, sys
 from StringIO import StringIO
 from copy import copy
+from twisted.internet import defer
 
-
 class IMAPFolder(BaseFolder):
     def __init__(self, imapserver, name, visiblename, accountname, repository):
         self.config = imapserver.config
@@ -68,10 +68,10 @@
         imapobj = self.imapserver.acquireconnection()
         maindefer = defer.Deferred()
         d = imapobj.examine(self.getfullname())
-        d.addCallback(self.cachemessagelist_worker, maindefer)
+        d.addCallback(self.cachemessagelist_starter, maindefer, imapobj)
         return maindefer
 
-    def cachemessagelist_worker(self, examineresult, maindefer):
+    def cachemessagelist_starter(self, examineresult, maindefer, imapobj):
         self.messagelist = {}
 
         try:
@@ -89,7 +89,29 @@
         # Now, get the flags and UIDs for these.
         # We could conceivably get rid of maxmsgid and just say
         # '1:*' here.
-        # FIXME: START HERE
+        df = imapobj.fetchFlags('1:%d' % maxmsgid)
+        du = imapobj.fetchUID('1:%d' % maxmsgid)
+        dl = defer.DeferredList([df, du])
+        dl.addCallback(self.cachemessagelist_worker, maindefer)
+
+    def cachemessagelist_worker(self, flags_uids, maindefer):
+        print "flags_uids is", flags_uids
+        #if not len(flags_uids):
+        #    # FIXME: this sometimes happens.  Is it right?
+        #    maindefer.callback(None)
+        #    return
+        # FIXME: not yet as robust as below.
+        flags, uids = flags_uids
+        flags = flags[1]
+        uids = uids[1]
+        for msg in flags.keys():
+            flags = imaputil.flagsimap2maildir(flags)
+            uid = uids[msg]
+            self.messagelist[uid] = {'uid': uid, 'flags': flags}
+
+        maindefer.callback(None)
+
+    def cachemessagelist_old(self):
         response = imapobj.fetch('1:%d' % maxmsgid, '(FLAGS UID)')[1]
         for messagestr in response:
             # Discard the message number.