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:
		@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user