Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6d6a15b

Browse files
committed
Added option to refilemessages() to keep sequences
1 parent 154a539 commit 6d6a15b

1 file changed

Lines changed: 27 additions & 4 deletions

File tree

Lib/mhlib.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -409,9 +409,9 @@ def removemessages(self, list):
409409

410410
# Refile one or more messages -- may raise os.error.
411411
# 'tofolder' is an open folder object
412-
def refilemessages(self, list, tofolder):
412+
def refilemessages(self, list, tofolder, keepsequences=0):
413413
errors = []
414-
refiled = []
414+
refiled = {}
415415
for n in list:
416416
ton = tofolder.getlast() + 1
417417
path = self.getmessagefilename(n)
@@ -431,15 +431,38 @@ def refilemessages(self, list, tofolder):
431431
pass
432432
continue
433433
tofolder.setlast(ton)
434-
refiled.append(n)
434+
refiled[n] = ton
435435
if refiled:
436-
self.removefromallsequences(refiled)
436+
if keepsequences:
437+
tofolder._copysequences(self, refiled.items())
438+
self.removefromallsequences(refiled.keys())
437439
if errors:
438440
if len(errors) == 1:
439441
raise os.error, errors[0]
440442
else:
441443
raise os.error, ('multiple errors:', errors)
442444

445+
# Helper for refilemessages() to copy sequences
446+
def _copysequences(self, fromfolder, refileditems):
447+
fromsequences = fromfolder.getsequences()
448+
tosequences = self.getsequences()
449+
changed = 0
450+
for name, seq in fromsequences.items():
451+
try:
452+
toseq = tosequences[name]
453+
new = 0
454+
except:
455+
toseq = []
456+
new = 1
457+
for fromn, ton in refileditems:
458+
if fromn in seq:
459+
toseq.append(ton)
460+
changed = 1
461+
if new and toseq:
462+
tosequences[name] = toseq
463+
if changed:
464+
self.putsequences(tosequences)
465+
443466
# Move one message over a specific destination message,
444467
# which may or may not already exist.
445468
def movemessage(self, n, tofolder, ton):

0 commit comments

Comments
 (0)