don't delete messages in local cache in dry-run mode

This makes dry-run consitent when called more than once.

Github-ref: https://github.com/OfflineIMAP/offlineimap/issues/370
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
Nicolas Sebrecht 2016-08-08 15:29:18 +02:00
parent f634546980
commit 6b313aabd3
2 changed files with 15 additions and 15 deletions

View File

@ -881,8 +881,7 @@ class BaseFolder(object):
self.ui.ignorecopyingmessage(uid, self, dstfolder)
if num_to_copy > 0 and self.repository.account.dryrun:
self.ui.info(
"[DRYRUN] Copy {0} messages from {1}[{2}] to {3}".format(
self.ui.info("[DRYRUN] Copy {} messages from {}[{}] to {}".format(
num_to_copy, self, self.repository, dstfolder.repository)
)
return
@ -947,13 +946,13 @@ class BaseFolder(object):
# won't lose message, we will just unneccessarily retransmit some.
# Delete messages from statusfolder that were either deleted by the
# user, or not being tracked (e.g. because of maxage).
if not self.repository.account.dryrun:
statusfolder.deletemessages(deletelist)
# Filter out untracked messages
# Filter out untracked messages.
deletelist = [uid for uid in deletelist if dstfolder.uidexists(uid)]
if len(deletelist):
self.ui.deletingmessages(deletelist, [dstfolder])
if self.repository.account.dryrun:
return #don't delete messages in dry-run mode
if not self.repository.account.dryrun:
dstfolder.deletemessages(deletelist)
def combine_flags_and_keywords(self, uid, dstfolder):

View File

@ -24,6 +24,7 @@ import six
from .Base import BaseFolder
class DatabaseFileLock(object):
"""Lock at database file level."""
@ -125,7 +126,7 @@ class LocalStatusSQLiteFolder(BaseFolder):
self.__upgrade_db(version)
def purge(self):
"""Remove any pre-existing database."""
"""Remove any pre-existing database. Do not call in dry-run mode."""
try:
os.unlink(self.filename)
@ -328,7 +329,7 @@ class LocalStatusSQLiteFolder(BaseFolder):
# We cannot assign a uid.
return uid
if self.uidexists(uid): # already have it
if self.uidexists(uid): # Already have it.
self.savemessageflags(uid, flags)
return uid