(self, message)
return uniq
Add message and return assigned key.
Add message and return assigned key.
Add message and return assigned key .
def add(self, message):
        """Add message and return assigned key."""
        tmp_file = self._create_tmp()
        try:
            self._dump_message(message, tmp_file)
        except BaseException:
            tmp_file.close()
            os.remove(tmp_file.name)
            raise
        _sync_close(tmp_file)
        if isinstance(message, MaildirMessage):
            subdir = message.get_subdir()
            suffix = self.colon + message.get_info()
            if suffix == self.colon:
                suffix = ''
        else:
            subdir = 'new'
            suffix = ''
        uniq = os.path.basename(tmp_file.name).split(self.colon)[0]
        dest = os.path.join(self._path, subdir, uniq + suffix)
        if isinstance(message, MaildirMessage):
            os.utime(tmp_file.name,
                     (os.path.getatime(tmp_file.name), message.get_date()))
        # No file modification should be done after the file is moved to its
        # final position in order to prevent race conditions with changes
        # from other programs
        try:
            try:
                os.link(tmp_file.name, dest)
            except (AttributeError, PermissionError):
                os.rename(tmp_file.name, dest)
            else:
                os.remove(tmp_file.name)
        except OSError as e:
            os.remove(tmp_file.name)
            if e.errno == errno.EEXIST:
                raise ExternalClashError('Name clash with existing message: %s'
                                         % dest)
            else:
                raise
        return uniq
def add ( self , message ) : tmp_file = self . _create_tmp ( ) try : self . _dump_message ( message , tmp_file ) except BaseException : tmp_file . close ( ) os . remove ( tmp_file . name ) raise _sync_close ( tmp_file ) if isinstance ( message , MaildirMessage ) : subdir = message . get_subdir ( ) suffix = self . colon + message . get_info ( ) if suffix == self . colon : suffix = '' else : subdir = 'new' suffix = '' uniq = os . path . basename ( tmp_file . name ) . split ( self . colon ) [ 0 ] dest = os . path . join ( self . _path , subdir , uniq + suffix ) if isinstance ( message , MaildirMessage ) : os . utime ( tmp_file . name , ( os . path . getatime ( tmp_file . name ) , message . get_date ( ) ) ) # No file modification should be done after the file is moved to its # final position in order to prevent race conditions with changes # from other programs try : try : os . link ( tmp_file . name , dest ) except ( AttributeError , PermissionError ) : os . rename ( tmp_file . name , dest ) else : os . remove ( tmp_file . name ) except OSError as e : os . remove ( tmp_file . name ) if e . errno == errno . EEXIST : raise ExternalClashError ( 'Name clash with existing message: %s' % dest ) else : raise return uniq