def cleanup_incomplete_downloads(): download_dir = os.path.join(app.config.get(prefs.MOVIES_DIRECTORY), 'Incomplete Downloads') if not fileutil.exists(download_dir): return files_in_use = set() for downloader in RemoteDownloader.make_view(): if downloader.get_state() in ('downloading', 'paused', 'offline', 'uploading', 'finished', 'uploading-paused'): filename = downloader.get_filename() if filename: if not fileutil.isabs(filename): filename = os.path.join(download_dir, filename) files_in_use.add(filename) try: entries = fileutil.listdir(download_dir) except OSError: entries = [] for f in entries: f = os.path.join(download_dir, f) if f not in files_in_use: try: if fileutil.isfile(f): fileutil.remove(f) elif fileutil.isdir(f): fileutil.rmtree(f) except OSError: # FIXME - maybe a permissions error? pass
def stop(self, delete): self.state = "stopped" self._shutdown_torrent() self.update_client() if delete: try: if fileutil.isdir(self.filename): fileutil.rmtree(self.filename) else: fileutil.remove(self.filename) except OSError: pass
def stop(self, delete): """Stops the download and removes the partially downloaded file. """ if self.state == 'finished': if delete: try: if fileutil.isdir(self.filename): fileutil.rmtree(self.filename) else: fileutil.remove(self.filename) except OSError: pass else: # Cancel the request, don't keep around partially # downloaded data self.cancel_request(remove_file=True) self.currentSize = 0 self.state = "stopped" self.update_client()