From: Florian Friesdorf Date: Thu, 12 Jul 2007 04:08:47 +0000 (+0100) Subject: fixes behaviour when changing flags, without corresp. rights (s,d,w) X-Git-Tag: last-darcs-commit~4 X-Git-Url: https://code.delx.au/offlineimap/commitdiff_plain/71a76d9a6166b3be73493912bdc02b5b4252f637 fixes behaviour when changing flags, without corresp. rights (s,d,w) --- diff --git a/offlineimap/folder/IMAP.py b/offlineimap/folder/IMAP.py index df1b329..0ab8892 100644 --- a/offlineimap/folder/IMAP.py +++ b/offlineimap/folder/IMAP.py @@ -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',