def delete_screencaps(): """ This func cleans up any screencaps that are 3 hours or older. It cleans up the mess that monitor.tasks.test_screencap creates This is a scheduled task. Let's have celerybeat run it. """ upload_storage = FileSystemStorage(location=getattr(settings, 'MONITOR_ROOT')) files = upload_storage.listdir(getattr(settings, 'MONITOR_ROOT'))[1] # If the file is over three hours old, delete it. for f in files: age_of_file = datetime.now() - upload_storage.created_time(f) if age_of_file.seconds > 10800: upload_storage.delete(f)
class DummyExternalStorage(Storage): def __init__(self, *args, **kwargs): self.wrapped = FileSystemStorage(*args, **kwargs) def path(self, name): # Overridden to give it the behaviour of the base Storage class # This is what an external storage backend would have raise NotImplementedError("This backend doesn't support absolute paths.") def _open(self, name, mode='rb'): # Overridden to return a DummyExternalStorageFile instead of a normal # File object return DummyExternalStorageFile(open(self.wrapped.path(name), mode)) # Wrap all other functions def _save(self, name, content): return self.wrapped._save(name, content) def delete(self, name): self.wrapped.delete(name) def exists(self, name): return self.wrapped.exists(name) def listdir(self, path): return self.wrapped.listdir(path) def size(self, name): return self.wrapped.size(name) def url(self, name): return self.wrapped.url(name) def accessed_time(self, name): return self.wrapped.accessed_time(name) def created_time(self, name): return self.wrapped.created_time(name) def modified_time(self, name): return self.wrapped.modified_time(name)