/head: changeset 28

Added LocalStatus support.
This commit is contained in:
jgoerzen 2002-06-21 03:20:42 +01:00
parent d2ac4a0984
commit a38a2f0848
4 changed files with 65 additions and 4 deletions

View File

@ -51,12 +51,18 @@ for accountname in accounts:
else:
password = getpass.getpass("Password for %s: " % accountname)
ssl = config.getboolean(accountname, "ssl")
# Connect to the remote server.
server = imapserver.IMAPServer(user, password, host, port, ssl)
#print "Connecting to server...",
#imapobj = server.makeconnection()
#print "Done."
remoterepos = repository.IMAP.IMAPRepository(server)
# Connect to the Maildirs.
localrepos = repository.Maildir.MaildirRepository(os.path.expanduser(config.get(accountname, "localfolders")))
# Connect to the local cache.
statusrepos = repository.LocalStatus.LocalStatusRepository(accountmetadata)
print "Synchronizing folder list..."
remoterepos.syncfoldersto(localrepos)
print "Done."

View File

@ -0,0 +1,53 @@
# Local status cache repository support
# Copyright (C) 2002 John Goerzen
# <jgoerzen@complete.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
from Base import BaseRepository
from imapsync import folder
import os
class LocalStatusRepository(BaseRepository):
def __init__(self, directory):
self.directory = directory
self.folders = None
def getsep(self):
return '.'
def getfolderfilename(self, foldername):
return os.path.join(self.directory, foldername)
def makefolder(self, foldername):
# "touch" the file.
file = open(self.getfolderfilename(foldername), "ab")
file.close()
# Invalidate the cache.
self.folders = None
def getfolders(self):
retval = []
for folder in os.listdir(self.directory):
retval.append(folder.LocalStatus.LocalStatusFolder(\
self.getfolderfilename(folder)))
return retval
def getfolder(self, foldername):
return folder.LocalStatus.LocalStatusFolder(self.getfolderfilename(foldername))

View File

@ -39,6 +39,8 @@ class MaildirRepository(BaseRepository):
os.mkdir(folderdir, 0700)
for subdir in ['cur', 'new', 'tmp']:
os.mkdir(os.path.join(folderdir, subdir), 0700)
# Invalidate the cache
self.folders = None
def deletefolder(self, foldername):
print "NOT YET IMPLEMENTED: DELETE FOLDER %s" % foldername

View File

@ -1 +1 @@
import IMAP, Base, Maildir
import IMAP, Base, Maildir, LocalStatus