aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2011-11-20 22:01:43 -0600
committerChristopher Allan Webber <cwebber@dustycloud.org>2011-11-20 22:01:43 -0600
commit98f6efb06898dc86398a742bddbf3a06e63355d7 (patch)
treed7fbdaf42806d56ef3249ce429d71030fa910ec9
parentfe0a8f53e251aae93bee5f4dee79d462fad751e8 (diff)
downloadmediagoblin-98f6efb06898dc86398a742bddbf3a06e63355d7.tar.lz
mediagoblin-98f6efb06898dc86398a742bddbf3a06e63355d7.tar.xz
mediagoblin-98f6efb06898dc86398a742bddbf3a06e63355d7.zip
copy_local_to_storage, both general and specialized-for-BasicFileStorage versions
This utility should allow for easy copying from a local filesystem to the storage instance.
-rw-r--r--mediagoblin/storage/__init__.py8
-rw-r--r--mediagoblin/storage/filestorage.py14
2 files changed, 22 insertions, 0 deletions
diff --git a/mediagoblin/storage/__init__.py b/mediagoblin/storage/__init__.py
index 9e592b9e..b76e18af 100644
--- a/mediagoblin/storage/__init__.py
+++ b/mediagoblin/storage/__init__.py
@@ -169,6 +169,14 @@ class StorageInterface(object):
with file(dest_path, 'wb') as dest_file:
dest_file.write(source_file.read())
+ def copy_local_to_storage(self, filename, filepath):
+ """
+ Copy this file from locally to the storage system.
+ """
+ with self.get_file(filepath, 'wb') as dest_file:
+ with file(filename, 'rb') as source_file:
+ dest_file.write(source_file.read())
+
###########
# Utilities
diff --git a/mediagoblin/storage/filestorage.py b/mediagoblin/storage/filestorage.py
index 22d6eb5a..a904865f 100644
--- a/mediagoblin/storage/filestorage.py
+++ b/mediagoblin/storage/filestorage.py
@@ -20,6 +20,7 @@ from mediagoblin.storage import (
NoWebServing)
import os
+import shutil
import urlparse
@@ -76,3 +77,16 @@ class BasicFileStorage(StorageInterface):
def get_local_path(self, filepath):
return self._resolve_filepath(filepath)
+
+ def copy_local_to_storage(self, filename, filepath):
+ """
+ Copy this file from locally to the storage system.
+ """
+ # Make directories if necessary
+ if len(filepath) > 1:
+ directory = self._resolve_filepath(filepath[:-1])
+ if not os.path.exists(directory):
+ os.makedirs(directory)
+
+ shutil.copy(
+ filename, self.get_local_path(filepath))