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: