docker-offlineimap/offlineimap
Sebastian Spaeth 3ce514e92b Simplify MappedIMAPFolder, fixing bugs
Previously, we instanciated an MappedImapFolder, and would cleverly (too
cleverly?) invoke methods on it casting it to an IMAPFolder by calling
methods such as: self._mb.cachemessages(self) where self._MB is the class
IMAPFolder and self and instance of MappedImapFolder. If
e.g. cachemessages() invokes a method uidexists() which exists for
MappedImapFolder, but not directly in IMAPFolder, I am not sure if
Python would at some point attempt to use the method of the wrong class.
Also, this leads to some twisted thinking as our class would in same
cases act as an IMAPFolder and in some cases as an MappedImapFOlder and
it is not always clear if we mean REMOTE UID or LOCAL UID.

This commit simplifies the class, by a)doing away with the complex Mixin
construct and directly inheriting from IMAPFOlder (so we get all the
IMAPFOlder methods that we can inherit). We instantiate self._mb as a
new instance of IMAPFolder which represents the local IMAP using local
UIDs, separating the MappedIMAPFolder construct logically from the
IMAPFolder somewhat.

In the long run, I would like to remove self._mb completely and simply
override any method that needs overriding, but let us take small and
understandable baby steps here.

Reported-and-tested-by: Vincent Beffara <vbeffara@gmail.com>
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2011-06-25 17:03:22 +02:00
..
folder Simplify MappedIMAPFolder, fixing bugs 2011-06-25 17:03:22 +02:00
repository repository/Maildir.py: Fix typo 'sudir' 2011-06-23 18:30:55 +02:00
ui threadutil: explicitly import get_ident from thread 2011-05-12 18:28:49 +02:00
__init__.py v6.3.4-rc2 2011-06-15 18:15:11 +02:00
accounts.py cleanup: remove uneeded imports 2011-05-09 22:42:15 +02:00
CustomConfig.py Improve CustomConfig documentation 2011-01-20 19:46:01 +01:00
error.py Add OfflineImapError class 2011-05-05 20:00:07 +02:00
imaplib2.py Update imaplib2 to 2.24 2011-06-09 18:26:39 +02:00
imaplibutil.py Check SSL certificate for expiration 2011-06-13 16:47:03 +02:00
imapserver.py Merge branch 'ss/handle-deleted-uid-while-syncing' into next 2011-06-17 23:43:47 +02:00
imaputil.py cleanup import statements and conform to PEP-8 2011-03-14 21:35:33 +01:00
init.py Always call ui.terminate() 2011-06-16 18:57:35 +02:00
localeval.py Update FSF address 2006-08-12 05:15:55 +01:00
mbnames.py explicitly define symbols to import instead of 'import *' 2011-05-09 22:43:03 +02:00
syncmaster.py Remove weird SigListener class 2011-05-08 14:25:16 +02:00
threadutil.py fix broken ui Blinkenlights in multi-threaded mode 2011-05-18 18:38:05 +02:00