]> code.delx.au - offlineimap/blobdiff - offlineimap/repository/Base.py
Finally fix the stupid LocalStatus folder bug, I really hope!
[offlineimap] / offlineimap / repository / Base.py
index 3abd290d233613331aabef2b5b0b910bc15f698c..ed07b572b87872e3749a9e3ee0eddae90d7cfde1 100644 (file)
 #    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 
 from offlineimap import CustomConfig
-from offlineimap.ui import UIBase
 import os.path
 
 def LoadRepository(name, account, reqtype):
+    from offlineimap.repository.Gmail import GmailRepository
     from offlineimap.repository.IMAP import IMAPRepository, MappedIMAPRepository
     from offlineimap.repository.Maildir import MaildirRepository
     if reqtype == 'remote':
         # For now, we don't support Maildirs on the remote side.
-        typemap = {'IMAP': IMAPRepository}
+        typemap = {'IMAP': IMAPRepository,
+                   'Gmail': GmailRepository}
     elif reqtype == 'local':
         typemap = {'IMAP': MappedIMAPRepository,
                    'Maildir': MaildirRepository}
@@ -124,9 +125,12 @@ class BaseRepository(CustomConfig.ConfigHelperMixin):
     def getfolder(self, foldername):
         raise NotImplementedError
     
-    def syncfoldersto(self, dest, status):
+    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()
@@ -136,8 +140,6 @@ class BaseRepository(CustomConfig.ConfigHelperMixin):
 
         srchash = {}
         for folder in srcfolders:
-            if (folder.getvisiblename()[-2:] == src.getsep() + "."):
-                continue
             srchash[folder.getvisiblename().replace(src.getsep(), dest.getsep())] = \
                                                            folder
         desthash = {}
@@ -148,18 +150,11 @@ class BaseRepository(CustomConfig.ConfigHelperMixin):
         # Find new folders.
         #
         
-        ignoredfolders = []
-        newfolders = []
-
         for key in srchash.keys():
             if not key in desthash:
-                srckey = key.replace(dest.getsep(),src.getsep())
-                if status.getfolder(key.replace(dest.getsep(),status.getsep())).isnewfolder():
-                    dest.makefolder(key)
-                    newfolders.append(srckey)
-                else:
-                    UIBase.getglobalui().ignorefolder (key, src, dest)
-                    ignoredfolders.append(srckey)
+                dest.makefolder(key)
+                for copyfolder in copyfolders:
+                    copyfolder.makefolder(key.replace(dest.getsep(), copyfolder.getsep()))
 
         #
         # Find deleted folders.
@@ -169,8 +164,6 @@ class BaseRepository(CustomConfig.ConfigHelperMixin):
         #for key in desthash.keys():
         #    if not key in srchash:
         #        dest.deletefolder(key)
-
-        return (ignoredfolders,newfolders)
         
     ##### Keepalive