]> code.delx.au - offlineimap/commitdiff
Infrastructure for notifying LocalStatus of local mailbox creations
authorJohn Goerzen <jgoerzen@complete.org>
Mon, 3 Mar 2008 04:17:45 +0000 (22:17 -0600)
committerJohn Goerzen <jgoerzen@complete.org>
Mon, 3 Mar 2008 04:17:45 +0000 (22:17 -0600)
This will let us delete LocalStatus caches when we create a local
mailbox

refs deb#459985, refs #19

offlineimap/accounts.py
offlineimap/repository/Base.py

index 9f224d03d943cf10747aec8cba692fa56429883d..8e96347944f58c37fcada83fd98fb18dca16e23a 100644 (file)
@@ -145,7 +145,7 @@ class AccountSynchronizationMixin:
             localrepos = self.localrepos
             statusrepos = self.statusrepos
             self.ui.syncfolders(remoterepos, localrepos)
-            remoterepos.syncfoldersto(localrepos)
+            remoterepos.syncfoldersto(localrepos, [statusrepos])
 
             folderthreads = []
             for remotefolder in remoterepos.getfolders():
index 93e464b3fb44e5bd25a35e8d0a511cb7d3a33fe7..0486dfcda7e1a084c32cf08726a27626cbe0a0a3 100644 (file)
@@ -125,9 +125,12 @@ class BaseRepository(CustomConfig.ConfigHelperMixin):
     def getfolder(self, foldername):
         raise NotImplementedError
     
-    def syncfoldersto(self, dest):
+    def syncfoldersto(self, dest, copyfolders):
         """Syncs the folders in this repository to those in dest.
-        It does NOT sync the contents of those folders."""
+        It does NOT sync the contents of those folders.
+
+        For every time dest.makefolder() is called, also call makefolder()
+        on each folder in copyfolders."""
         src = self
         srcfolders = src.getfolders()
         destfolders = dest.getfolders()
@@ -150,6 +153,8 @@ class BaseRepository(CustomConfig.ConfigHelperMixin):
         for key in srchash.keys():
             if not key in desthash:
                 dest.makefolder(key)
+                for copyfolder in copyfolders:
+                    copyfolder.makefolder(key)
 
         #
         # Find deleted folders.