Revert "fix: don't loose local mails because of maxage"
This partially reverts commit 25513e9038
.
Only changes about dates and times are reverted. The changes about the style are
kept.
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
parent
a70971585d
commit
05fa311878
@ -31,7 +31,7 @@ try: # python 2.6 has set() built in
|
|||||||
except NameError:
|
except NameError:
|
||||||
from sets import Set as set
|
from sets import Set as set
|
||||||
|
|
||||||
from offlineimap import OfflineImapError, emailutil
|
from offlineimap import OfflineImapError
|
||||||
|
|
||||||
# Find the UID in a message filename
|
# Find the UID in a message filename
|
||||||
re_uidmatch = re.compile(',U=(\d+)')
|
re_uidmatch = re.compile(',U=(\d+)')
|
||||||
@ -245,35 +245,16 @@ class MaildirFolder(BaseFolder):
|
|||||||
filepath = os.path.join(self.getfullname(), filename)
|
filepath = os.path.join(self.getfullname(), filename)
|
||||||
return os.path.getmtime(filepath)
|
return os.path.getmtime(filepath)
|
||||||
|
|
||||||
def new_message_filename(self, uid, flags=set(), rtime=None):
|
def new_message_filename(self, uid, flags=set()):
|
||||||
"""Creates a new unique Maildir filename
|
"""Creates a new unique Maildir filename
|
||||||
|
|
||||||
:param uid: The UID`None`, or a set of maildir flags
|
:param uid: The UID`None`, or a set of maildir flags
|
||||||
:param flags: A set of maildir flags
|
:param flags: A set of maildir flags
|
||||||
:returns: String containing unique message filename"""
|
:returns: String containing unique message filename"""
|
||||||
|
|
||||||
# Prefer internal time (rtime) over retrieval time (_gettimeseq()) for
|
timeval, timeseq = _gettimeseq()
|
||||||
# consistency in the maxage check, which compares times of local mail
|
return '%d_%d.%d.%s,U=%d,FMD5=%s%s2,%s'% \
|
||||||
# (gotten from the filename) to the internal time of the remote mail.
|
(timeval, timeseq, os.getpid(), socket.gethostname(),
|
||||||
if rtime is None:
|
|
||||||
timeval, timeseq = _gettimeseq()
|
|
||||||
else:
|
|
||||||
timeval, timeseq = rtime, 0
|
|
||||||
|
|
||||||
def build_filename(timeval, timeseq, pid, hostname, uid, folder_id,
|
|
||||||
infosep, flags):
|
|
||||||
"""Compute a new filename with 'time sequence' uniqueness in mind."""
|
|
||||||
filename = '%d_%d.%d.%s,U=%d,FMD5=%s%s2,%s'% (
|
|
||||||
timeval, timeseq, pid, hostname, uid, folder_id, infosep, flags)
|
|
||||||
for imap_dir in ['cur', 'new', 'tmp']:
|
|
||||||
if os.path.exists(os.path.join(self.getfullname(), imap_dir,
|
|
||||||
filename)):
|
|
||||||
# Increase timeseq.
|
|
||||||
return build_filename(timeval, timeseq + 1, pid, hostname,
|
|
||||||
uid, folder_id, infosep, flags)
|
|
||||||
return filename
|
|
||||||
|
|
||||||
return build_filename(timeval, timeseq, os.getpid(), socket.gethostname(),
|
|
||||||
uid, self._foldermd5, self.infosep, ''.join(sorted(flags)))
|
uid, self._foldermd5, self.infosep, ''.join(sorted(flags)))
|
||||||
|
|
||||||
|
|
||||||
@ -341,10 +322,7 @@ class MaildirFolder(BaseFolder):
|
|||||||
# Otherwise, save the message in tmp/ and then call savemessageflags()
|
# Otherwise, save the message in tmp/ and then call savemessageflags()
|
||||||
# to give it a permanent home.
|
# to give it a permanent home.
|
||||||
tmpdir = os.path.join(self.getfullname(), 'tmp')
|
tmpdir = os.path.join(self.getfullname(), 'tmp')
|
||||||
# Make sure rtime is the internal date, so it can be put in the filename
|
messagename = self.new_message_filename(uid, flags)
|
||||||
if rtime is None:
|
|
||||||
rtime = emailutil.get_message_date(content)
|
|
||||||
messagename = self.new_message_filename(uid, flags, rtime=rtime)
|
|
||||||
tmpname = self.save_to_tmp_file(messagename, content)
|
tmpname = self.save_to_tmp_file(messagename, content)
|
||||||
if rtime != None:
|
if rtime != None:
|
||||||
os.utime(os.path.join(self.getfullname(), tmpname), (rtime, rtime))
|
os.utime(os.path.join(self.getfullname(), tmpname), (rtime, rtime))
|
||||||
@ -420,10 +398,8 @@ class MaildirFolder(BaseFolder):
|
|||||||
oldfilename = self.messagelist[uid]['filename']
|
oldfilename = self.messagelist[uid]['filename']
|
||||||
dir_prefix, filename = os.path.split(oldfilename)
|
dir_prefix, filename = os.path.split(oldfilename)
|
||||||
flags = self.getmessageflags(uid)
|
flags = self.getmessageflags(uid)
|
||||||
content = self.getmessage(uid)
|
|
||||||
rtime = emailutil.get_message_date(content)
|
|
||||||
newfilename = os.path.join(dir_prefix,
|
newfilename = os.path.join(dir_prefix,
|
||||||
self.new_message_filename(new_uid, flags, rtime=rtime))
|
self.new_message_filename(new_uid, flags))
|
||||||
os.rename(os.path.join(self.getfullname(), oldfilename),
|
os.rename(os.path.join(self.getfullname(), oldfilename),
|
||||||
os.path.join(self.getfullname(), newfilename))
|
os.path.join(self.getfullname(), newfilename))
|
||||||
self.messagelist[new_uid] = self.messagelist[uid]
|
self.messagelist[new_uid] = self.messagelist[uid]
|
||||||
|
Loading…
Reference in New Issue
Block a user