Fix label processing in GmailMaildir
Commit7df765cfdb
introduced regression: GmailMaildir caches labels in its own function and it was testing the presence of the 'labels' key in message descriptor. But7df765cf
changed descriptor initialization and this key is always present. So now we have 'labels_cached' flag that tells us if labels were already cached or not. Signed-off-by: Eygene Ryabinkin <rea@codelabs.ru>
This commit is contained in:
parent
7df765cfdb
commit
aef88cc1f8
@ -59,7 +59,8 @@ class GmailMaildirFolder(MaildirFolder):
|
|||||||
|
|
||||||
# Interface from BaseFolder
|
# Interface from BaseFolder
|
||||||
def msglist_item_initializer(self, uid):
|
def msglist_item_initializer(self, uid):
|
||||||
return {'flags': set(), 'labels': set(), 'filename': '/no-dir/no-such-file/', 'mtime': 0}
|
return {'flags': set(), 'labels': set(), 'labels_cached': False,
|
||||||
|
'filename': '/no-dir/no-such-file/', 'mtime': 0}
|
||||||
|
|
||||||
|
|
||||||
def cachemessagelist(self):
|
def cachemessagelist(self):
|
||||||
@ -72,9 +73,10 @@ class GmailMaildirFolder(MaildirFolder):
|
|||||||
filepath = os.path.join(self.getfullname(), msg['filename'])
|
filepath = os.path.join(self.getfullname(), msg['filename'])
|
||||||
msg['mtime'] = long(os.stat(filepath).st_mtime)
|
msg['mtime'] = long(os.stat(filepath).st_mtime)
|
||||||
|
|
||||||
|
|
||||||
def getmessagelabels(self, uid):
|
def getmessagelabels(self, uid):
|
||||||
# Labels are not cached in cachemessagelist because it is too slow.
|
# Labels are not cached in cachemessagelist because it is too slow.
|
||||||
if not 'labels' in self.messagelist[uid]:
|
if not self.messagelist[uid]['labels_cached']:
|
||||||
filename = self.messagelist[uid]['filename']
|
filename = self.messagelist[uid]['filename']
|
||||||
filepath = os.path.join(self.getfullname(), filename)
|
filepath = os.path.join(self.getfullname(), filename)
|
||||||
|
|
||||||
@ -88,10 +90,11 @@ class GmailMaildirFolder(MaildirFolder):
|
|||||||
self.messagelist[uid]['labels'] = \
|
self.messagelist[uid]['labels'] = \
|
||||||
imaputil.labels_from_header(self.labelsheader,
|
imaputil.labels_from_header(self.labelsheader,
|
||||||
self.getmessageheader(content, self.labelsheader))
|
self.getmessageheader(content, self.labelsheader))
|
||||||
|
self.messagelist[uid]['labels_cached'] = True
|
||||||
|
|
||||||
return self.messagelist[uid]['labels']
|
return self.messagelist[uid]['labels']
|
||||||
|
|
||||||
|
|
||||||
def getmessagemtime(self, uid):
|
def getmessagemtime(self, uid):
|
||||||
if not 'mtime' in self.messagelist[uid]:
|
if not 'mtime' in self.messagelist[uid]:
|
||||||
return 0
|
return 0
|
||||||
|
Loading…
Reference in New Issue
Block a user