def handle_noargs(self, *, verbosity=1, dry_run=False, **options): verbosity = int(verbosity) def log(msg, level=2): '''Utility to write log message at appropriate log level.''' if verbosity >= level: self.stdout.write(msg) def failure(fn, path, excinfo): log('error: {}: {}'.format(os.strerror(excinfo[1].errno), path), 1) storage = ProtectedFileSystemStorage() try: dirs, _ = storage.listdir('projects') except FileNotFoundError: return for dirname in dirs: path = posixpath.join('projects', dirname) if not dirname.isdigit(): log('Skipping directory: {}'.format(path)) elif not Project.objects.filter(pk=dirname).exists(): log('Removing directory: {}'.format(path), 2) if not dry_run: shutil.rmtree(storage.path(path), onerror=failure) else: _, files = storage.listdir(posixpath.join('projects', dirname)) for name in files: name = posixpath.join(path, name) if DataFile.objects.filter(file=name).exists(): log('Keeping file: {}'.format(name), 3) else: log('Removing file: {}'.format(name), 2) if not dry_run: storage.delete(name)
def handle_noargs(self, *, verbosity=1, dry_run=False, **options): verbosity = int(verbosity) def log(msg, level=2): '''Utility to write log message at appropriate log level.''' if verbosity >= level: self.stdout.write(msg) def failure(fn, path, excinfo): log('error: {}: {}'.format(os.strerror(excinfo[1].errno), path), 1) storage = ProtectedFileSystemStorage() try: _, files = storage.listdir(posixpath.join('projects', 'datafiles')) except FileNotFoundError: return for name in files: name = posixpath.join('projects', 'datafiles', name) if DataFile.objects.filter(file=name).exists(): log('Keeping file: {}'.format(name), 2) else: log('Removing file: {}'.format(name), 1) if not dry_run: storage.delete(name)