Example #1
0
    def save(self, filename, finish=True, mode='wb'):
        if finish:
            self.finish()

        # If no filename, return contents to caller
        if filename is None:
            if not self.saved:
                safe_remove(self.temppath)
                self.saved = True
            self.tempfile.seek(0, 0)
            return self.tempfile.read()

        # 1st save just renames the tempfile
        exists = os.path.exists(filename)
        if (not self.saved and
                (('a' not in mode) or not exists)):
            try:
                if exists:
                    os.remove(filename)
                os.rename(self.temppath, filename)
                self.saved = True
                return
            except (OSError, IOError):
                pass

        # 2nd save (or append to existing) creates a copy
        with open(filename, mode) as out:
            self.save_copy(out)
            if not self.saved:
                safe_remove(self.temppath)
        self.saved = True
Example #2
0
    def __init__(self, dir=None, name=None, long_running=False,
                       use_filter=FILTER_MD5):
        self.tempfile, self.temppath = self._mk_tempfile_and_path(dir)
        self.name = name

        self.outer_md5sum = None
        if use_filter:
            self.outer_md5 = hashlib.md5()
            self.md5filter = IOFilter(self.tempfile, self._md5_callback,
                                      name='%s/md5' % (self.name or 'css'))
            self.fd = self.md5filter.writer()
        else:
            self.outer_md5 = None
            self.fd = self.tempfile

        self.saved = False
        self.finished = False
        try:
            self._write_preamble()
            OutputCoprocess.__init__(self, self._mk_command(), self.fd,
                                     name=self.name,
                                     long_running=long_running)
        except:
            try:
                self.fd.close()
                if self.outer_md5 is not None:
                    self.md5filter.close()
                    self.tempfile.close()
                safe_remove(self.temppath)
            except (IOError, OSError):
                pass
            raise
Example #3
0
    def __init__(self, dir=None, name=None, long_running=False,
                       use_filter=FILTER_MD5):
        self.tempfile, self.temppath = self._mk_tempfile_and_path(dir)
        self.name = name

        self.outer_sha256 = None
        if use_filter:
            self.outer_sha = hashlib.sha256()
            self.shafilter = IOFilter(self.tempfile, self._sha256_callback,
                                      name='%s/sha256' % (self.name or 'css'),
                                      blocksize=self.FILTER_BLOCKSIZE)
            self.fd = self.shafilter.writer()
        else:
            self.outer_sha = None
            self.fd = self.tempfile

        self.saved = False
        self.finished = False
        try:
            self._write_preamble()
            OutputCoprocess.__init__(self, self._mk_command(), self.fd,
                                     name=self.name,
                                     long_running=long_running)
        except:
            try:
                self.fd.close()
                if self.outer_sha is not None:
                    self.shafilter.close()
                    self.tempfile.close()
                safe_remove(self.temppath)
            except (IOError, OSError):
                pass
            raise
Example #4
0
    def save(self, filename, finish=True, mode='wb'):
        if finish:
            self.finish()

        # If no filename, return contents to caller
        if filename is None:
            if not self.saved:
                safe_remove(self.temppath)
                self.saved = True
            self.tempfile.seek(0, 0)
            return self.tempfile.read()

        # 1st save just renames the tempfile
        exists = os.path.exists(filename)
        if (not self.saved and (('a' not in mode) or not exists)):
            try:
                if exists:
                    os.remove(filename)
                os.rename(self.temppath, filename)
                self.saved = True
                return
            except (OSError, IOError):
                pass

        # 2nd save (or append to existing) creates a copy
        with open(filename, mode) as out:
            self.save_copy(out)
            if not self.saved:
                safe_remove(self.temppath)
        self.saved = True
Example #5
0
 def purge_old_logfiles(self, keep=None):
     keep = keep or self.KEEP_LOGS
     for lf in self._list_logfiles()[:-keep]:
         try:
             safe_remove(os.path.join(self.logdir, lf))
         except OSError:
             pass
Example #6
0
 def purge_old_logfiles(self, keep=None):
     keep = keep or self.KEEP_LOGS
     for lf in self._list_logfiles()[:-keep]:
         try:
             safe_remove(os.path.join(self.logdir, lf))
         except OSError:
             pass
Example #7
0
    def __init__(self, dir=None, name=None, long_running=False, use_filter=FILTER_MD5):
        self.tempfile, self.temppath = self._mk_tempfile_and_path(dir)
        self.name = name

        self.outer_md5sum = None
        if use_filter:
            self.outer_md5 = hashlib.md5()
            self.md5filter = IOFilter(self.tempfile, self._md5_callback, name="%s/md5" % (self.name or "css"))
            self.fd = self.md5filter.writer()
        else:
            self.outer_md5 = None
            self.fd = self.tempfile

        self.saved = False
        self.finished = False
        try:
            self._write_preamble()
            OutputCoprocess.__init__(self, self._mk_command(), self.fd, name=self.name, long_running=long_running)
        except:
            try:
                self.fd.close()
                if self.outer_md5 is not None:
                    self.md5filter.close()
                    self.tempfile.close()
                safe_remove(self.temppath)
            except (IOError, OSError):
                pass
            raise
Example #8
0
 def _refresh(self):
     with self._lock:
         mailbox.Maildir._refresh(self)
         # WERVD mail names don't have dots in them
         for t in [k for k in self._toc.keys() if '.' in k]:
             del self._toc[t]
     safe_remove()  # Try to remove any postponed removals
Example #9
0
 def _refresh(self):
     with self._lock:
         mailbox.Maildir._refresh(self)
         # WERVD mail names don't have dots in them
         for t in [k for k in self._toc.keys() if '.' in k]:
             del self._toc[t]
     safe_remove()  # Try to remove any postponed removals
Example #10
0
    def save(self, filename, finish=True, mode="wb"):
        if finish:
            self.finish()
        exists = os.path.exists(filename)

        # 1st save just renames the tempfile
        if not self.saved and (("a" not in mode) or not exists):
            try:
                if exists:
                    os.remove(filename)
                os.rename(self.temppath, filename)
                self.saved = True
                return
            except (OSError, IOError):
                pass

        # 2nd save (or append to existing) creates a copy
        with open(filename, mode) as out:
            self.save_copy(out)
            if not self.saved:
                safe_remove(self.temppath)
        self.saved = True
Example #11
0
 def remove(self, key):
     # FIXME: Remove all the copies of this message!
     fn = self._lookup(key)
     del self._toc[key]
     safe_remove(fn)
Example #12
0
 def remove(self, key):
     # FIXME: Remove all the copies of this message!
     with self._lock:
         fn = os.path.join(self._path, self._lookup(key))
         del self._toc[key]
     safe_remove(fn)
Example #13
0
 def remove(self, key):
     with self._lock:
         fn = os.path.join(self._path, self._lookup(key))
         del self._toc[key]
     safe_remove(fn)
Example #14
0
 def remove(self, key):
     # FIXME: Remove all the copies of this message!
     with self._lock:
         fn = os.path.join(self._path, self._lookup(key))
         del self._toc[key]
     safe_remove(fn)
Example #15
0
 def remove(self, key):
     # FIXME: Remove all the copies of this message!
     fn = self._lookup(key)
     del self._toc[key]
     safe_remove(fn)
Example #16
0
 def remove(self, key):
     with self._lock:
         fn = os.path.join(self._path, self._lookup(key))
         del self._toc[key]
     safe_remove(fn)