]> code.delx.au - offlineimap/blobdiff - offlineimap/accounts.py
Synchronize newly created folders both ways
[offlineimap] / offlineimap / accounts.py
index 9f224d03d943cf10747aec8cba692fa56429883d..a78dc36496f3c47e8760ba5152c33ca72fa40305 100644 (file)
@@ -145,10 +145,19 @@ class AccountSynchronizationMixin:
             localrepos = self.localrepos
             statusrepos = self.statusrepos
             self.ui.syncfolders(remoterepos, localrepos)
-            remoterepos.syncfoldersto(localrepos)
+
+            (remoteignored,remotenew) = remoterepos.syncfoldersto(localrepos,statusrepos)
+            if len(remotenew):
+                localrepos.forgetfolders()
+
+            (localignored,localnew) = localrepos.syncfoldersto(remoterepos,statusrepos)
+            if len(localnew):
+                remoterepos.forgetfolders()
 
             folderthreads = []
             for remotefolder in remoterepos.getfolders():
+                if remotefolder.getvisiblename() in remoteignored:
+                    continue
                 thread = InstanceLimitedThread(\
                     instancename = 'FOLDER_' + self.remoterepos.getname(),
                     target = syncfolder,
@@ -233,6 +242,14 @@ def syncfolder(accountname, remoterepos, remotefolder, localrepos,
 
     #
 
+    if ((statusfolder.isnewfolder()) and
+        (len(localfolder.getmessagelist()) > 0) and
+        (len(remotefolder.getmessagelist()) == 0)):
+            # This is a locally created folder. Copy its contents to the
+            # remote folder, and to the StatusFolder.
+
+            localfolder.syncmessagesto(statusfolder, [remotefolder, statusfolder])
+
     if not statusfolder.isnewfolder():
         # Delete local copies of remote messages.  This way,
         # if a message's flag is modified locally but it has been