aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/storage/filestorage.py
diff options
context:
space:
mode:
authorElrond <elrond+mediagoblin.org@samba-tng.org>2013-04-08 15:57:06 +0200
committerElrond <elrond+mediagoblin.org@samba-tng.org>2013-04-08 15:57:06 +0200
commit2dd0af36359a50efbef7dfefaea1f05ae633325c (patch)
tree6bd361d903e5114bae53a695191665dab39c1eaa /mediagoblin/storage/filestorage.py
parent0c0f31c4efd2b4d849aaf8efaee7ecf6829d4f6c (diff)
parent0ac8317ddceee6d705c175e69c0825078246c7b9 (diff)
downloadmediagoblin-2dd0af36359a50efbef7dfefaea1f05ae633325c.tar.lz
mediagoblin-2dd0af36359a50efbef7dfefaea1f05ae633325c.tar.xz
mediagoblin-2dd0af36359a50efbef7dfefaea1f05ae633325c.zip
Merge remote-tracking branch 'cwebber/254_delete_queue_directories'
* cwebber/254_delete_queue_directories: Removing docstring bit about delete_file possibly deleting directories in the future Convert media processing backends to delete the queue directory (#254) Implement delete_dir in the FileStorage Conflicts: mediagoblin/media_types/image/processing.py mediagoblin/media_types/video/processing.py Conflicts, because those media_types already use the newer proc_state.delete_queue_file() method (which needs updating.
Diffstat (limited to 'mediagoblin/storage/filestorage.py')
-rw-r--r--mediagoblin/storage/filestorage.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/mediagoblin/storage/filestorage.py b/mediagoblin/storage/filestorage.py
index ef786b61..3d6e0753 100644
--- a/mediagoblin/storage/filestorage.py
+++ b/mediagoblin/storage/filestorage.py
@@ -62,10 +62,32 @@ class BasicFileStorage(StorageInterface):
return open(self._resolve_filepath(filepath), mode)
def delete_file(self, filepath):
- # TODO: Also delete unused directories if empty (safely, with
- # checks to avoid race conditions).
+ """Delete file at filepath
+
+ Raises OSError in case filepath is a directory."""
+ #TODO: log error
os.remove(self._resolve_filepath(filepath))
+ def delete_dir(self, dirpath, recursive=False):
+ """returns True on succes, False on failure"""
+
+ dirpath = self._resolve_filepath(dirpath)
+
+ # Shortcut the default and simple case of nonempty=F, recursive=F
+ if recursive:
+ try:
+ shutil.rmtree(dirpath)
+ except OSError as e:
+ #TODO: log something here
+ return False
+ else: # recursively delete everything
+ try:
+ os.rmdir(dirpath)
+ except OSError as e:
+ #TODO: log something here
+ return False
+ return True
+
def file_url(self, filepath):
if not self.base_url:
raise NoWebServing(