diff --git a/head/offlineimap.py b/head/offlineimap.py index dd46caf..5c08570 100644 --- a/head/offlineimap.py +++ b/head/offlineimap.py @@ -68,16 +68,36 @@ for accountname in accounts: print "Done." for remotefolder in remoterepos.getfolders(): print "*** SYNCHRONIZING FOLDER %s" % remotefolder.getname() + # Load local folder. localfolder = localrepos.getfolder(remotefolder.getname()) - #if not localfolder.isuidvalidityok(remotefolder): - # print 'UID validity is a problem for this folder; skipping.' - # continue - print "Reading remote message list...", - remotefolder.cachemessagelist() - print len(remotefolder.getmessagelist().keys()), "messages." + if not localfolder.isuidvalidityok(remotefolder): + print 'UID validity is a problem for this folder; skipping.' + continue print "Reading local message list...", localfolder.cachemessagelist() print len(localfolder.getmessagelist().keys()), "messages." - print "Synchronizing remote to local..." - remotefolder.syncmessagesto(localfolder) + + # Load remote folder. + print "Reading remote message list...", + remotefolder.cachemessagelist() + print len(remotefolder.getmessagelist().keys()), "messages." + + # Load status folder. + statusfolder = statusrepos.getfolder(remotefolder.getname()) + + if statusfolder.isnewfolder(): + print "Local status folder is new; ignoring." + else: + print "Synchronizing local changes." + localfolder.syncmessagesto(statusfolder, [remotefolder, statusfolder]) + + # Synchronize remote changes. + print "Synchronizing remote to local..." + remotefolder.syncmessagesto(localfolder, [localfolder, statusfolder]) + + # Make sure the status folder is up-to-date. + print "Updating local status cache..." + localfolder.syncmessagesto(statusfolder) + statusfolder.save() + diff --git a/head/offlineimap/folder/__init__.py b/head/offlineimap/folder/__init__.py index 52dd3de..bcdb844 100644 --- a/head/offlineimap/folder/__init__.py +++ b/head/offlineimap/folder/__init__.py @@ -1 +1,2 @@ -import Base, IMAP, Maildir +import Base, IMAP, Maildir, LocalStatus +