fix behaviour for delete/expunge, when lacking rights
This patch maneuvers around python imaplib's mysterious read-only detection algorithm and correctly calls the UI's deletetoreadonly(), when trying to delete/expunge in a mailbox without having the necessary rights.
This commit is contained in:
parent
2efc4589a0
commit
c305d63e00
@ -424,12 +424,17 @@ class IMAPFolder(BaseFolder):
|
||||
self.addmessagesflags_noconvert(uidlist, ['T'])
|
||||
imapobj = self.imapserver.acquireconnection()
|
||||
try:
|
||||
try:
|
||||
imapobj.select(self.getfullname())
|
||||
except imapobj.readonly:
|
||||
# Making sure, that we have the necessary rights
|
||||
# ensuring that we access readonly: python's braindead imaplib.py
|
||||
# otherwise might raise an exception during the myrights() call
|
||||
imapobj.select(self.getfullname(),readonly=1)
|
||||
if not 'd' in imapobj.myrights(self.getfullname())[1][0].split()[1]:
|
||||
# no delete/expunge rights
|
||||
UIBase.getglobalui().deletereadonly(self, uidlist)
|
||||
return
|
||||
|
||||
if self.expunge:
|
||||
imapobj.select(self.getfullname())
|
||||
assert(imapobj.expunge()[0] == 'OK')
|
||||
finally:
|
||||
self.imapserver.releaseconnection(imapobj)
|
||||
|
Loading…
Reference in New Issue
Block a user