fixes behaviour when changing flags, without corresp. rights (s,d,w)

This commit is contained in:
Florian Friesdorf 2007-07-12 05:08:47 +01:00
parent c305d63e00
commit 71a76d9a61

View File

@ -365,9 +365,24 @@ class IMAPFolder(BaseFolder):
imapobj = self.imapserver.acquireconnection()
try:
# 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)
myrights = imapobj.myrights(self.getfullname())[1][0].split()[1]
if 'T' in flags and not 'd' in myrights or \
'S' in flags and not 's' in myrights or \
filter(lambda x: x not in 'TS', flags) and not 'w' in myrights:
# no delete/expunge right, but needed or
# no store seen right, but needed or
# no write right, but needed
UIBase.getglobalui().flagstoreadonly(self, uidlist, flags)
return
try:
imapobj.select(self.getfullname())
except imapobj.readonly:
# unsure, whether this can be reached
UIBase.getglobalui().flagstoreadonly(self, uidlist, flags)
return
r = imapobj.uid('store',