Fix mbox.select(foldername) readonly parameter comparison
The default parameter value was "None", and we were comparing that directly to the imaplib2 value of is_readonly which is False or True, so the comparison always returned "False". Fix this by setting the default parameter to "False" and not "None". Also convert all users of that function to use False/True. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
parent
d981d66305
commit
33b4a16dac
@ -43,3 +43,7 @@ Bug Fixes
|
||||
|
||||
* Make NOOPs to keep a server connection open more resistant against dropped
|
||||
connections.
|
||||
|
||||
* a readonly parameter to select() was not always treated correctly,
|
||||
which could result in some folders being opened read-only when we
|
||||
really needed read-write.
|
||||
|
@ -54,7 +54,7 @@ class IMAPFolder(BaseFolder):
|
||||
try:
|
||||
imapobj.select(self.getfullname())
|
||||
except imapobj.readonly:
|
||||
imapobj.select(self.getfullname(), readonly = 1)
|
||||
imapobj.select(self.getfullname(), readonly = True)
|
||||
|
||||
def suggeststhreads(self):
|
||||
return 1
|
||||
@ -204,7 +204,7 @@ class IMAPFolder(BaseFolder):
|
||||
fails_left = 2 # retry on dropped connection
|
||||
while fails_left:
|
||||
try:
|
||||
imapobj.select(self.getfullname(), readonly = 1)
|
||||
imapobj.select(self.getfullname(), readonly = True)
|
||||
res_type, data = imapobj.uid('fetch', str(uid),
|
||||
'(BODY.PEEK[])')
|
||||
fails_left = 0
|
||||
|
@ -34,25 +34,25 @@ except ImportError:
|
||||
#fails on python <2.6
|
||||
pass
|
||||
|
||||
class UsefulIMAPMixIn:
|
||||
class UsefulIMAPMixIn(object):
|
||||
def getselectedfolder(self):
|
||||
if self.state == 'SELECTED':
|
||||
return self.mailbox
|
||||
return None
|
||||
|
||||
def select(self, mailbox='INBOX', readonly=None, force = 0):
|
||||
def select(self, mailbox='INBOX', readonly=False, force = 0):
|
||||
"""Selects a mailbox on the IMAP server
|
||||
|
||||
:returns: 'OK' on success, nothing if the folder was already
|
||||
selected or raises an :exc:`OfflineImapError`"""
|
||||
if (not force) and self.getselectedfolder() == mailbox \
|
||||
and self.is_readonly == readonly:
|
||||
if self.getselectedfolder() == mailbox and self.is_readonly == readonly \
|
||||
and not force:
|
||||
# No change; return.
|
||||
return
|
||||
# Wipe out all old responses, to maintain semantics with old imaplib2
|
||||
del self.untagged_responses[:]
|
||||
try:
|
||||
result = self.__class__.__bases__[1].select(self, mailbox, readonly)
|
||||
result = super(UsefulIMAPMixIn, self).select(mailbox, readonly)
|
||||
except self.abort, e:
|
||||
# self.abort is raised when we are supposed to retry
|
||||
errstr = "Server '%s' closed connection, error on SELECT '%s'. Ser"\
|
||||
|
@ -289,7 +289,7 @@ class IMAPRepository(BaseRepository):
|
||||
try:
|
||||
for foldername in self.folderincludes:
|
||||
try:
|
||||
imapobj.select(foldername, readonly = 1)
|
||||
imapobj.select(foldername, readonly = True)
|
||||
except OfflineImapError, e:
|
||||
# couldn't select this folderinclude, so ignore folder.
|
||||
if e.severity > OfflineImapError.ERROR.FOLDER:
|
||||
|
Loading…
Reference in New Issue
Block a user