aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/process_media
diff options
context:
space:
mode:
authorJoar Wandborg <git@wandborg.com>2011-08-04 01:32:34 +0200
committerJoar Wandborg <git@wandborg.com>2011-08-04 01:32:34 +0200
commit851c51a354d1355683093cdb04d48fcaafc20c28 (patch)
tree5dab0d6a8898d43af8601317a6eb46bb2baa348e /mediagoblin/process_media
parent4d74812dfc5a671aa50f54951ffe9e0ee520f8f7 (diff)
downloadmediagoblin-851c51a354d1355683093cdb04d48fcaafc20c28.tar.lz
mediagoblin-851c51a354d1355683093cdb04d48fcaafc20c28.tar.xz
mediagoblin-851c51a354d1355683093cdb04d48fcaafc20c28.zip
Feature 477 - Support Cloud Files public storage
* Added configuration options to mediagoblin.ini * process_media supports the python-cloudfiles almost-file-like objects by wrapping them in a contextlib.contextmanager-decorated func. * storage now has the CloudFilesStorage * New dependency added to setup.py; `python-cloudfiles`
Diffstat (limited to 'mediagoblin/process_media')
-rw-r--r--mediagoblin/process_media/__init__.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/mediagoblin/process_media/__init__.py b/mediagoblin/process_media/__init__.py
index 125b24e0..8e12ca4d 100644
--- a/mediagoblin/process_media/__init__.py
+++ b/mediagoblin/process_media/__init__.py
@@ -19,6 +19,7 @@ from mediagoblin.db.util import ObjectId
from celery.task import task
from mediagoblin import mg_globals as mgg
+from contextlib import contextmanager
THUMB_SIZE = 180, 180
@@ -31,6 +32,12 @@ def create_pub_filepath(entry, filename):
unicode(entry['_id']),
filename])
+@contextmanager
+def closing(callback):
+ try:
+ yield callback
+ finally:
+ pass
@task
def process_media_initial(media_id):
@@ -53,7 +60,7 @@ def process_media_initial(media_id):
thumb_filepath = create_pub_filepath(entry, 'thumbnail.jpg')
thumb_file = mgg.public_store.get_file(thumb_filepath, 'w')
- with thumb_file:
+ with closing(thumb_file):
thumb.save(thumb_file, "JPEG", quality=90)
"""
@@ -73,7 +80,7 @@ def process_media_initial(media_id):
medium_filepath = create_pub_filepath(entry, 'medium.jpg')
medium_file = mgg.public_store.get_file(medium_filepath, 'w')
- with medium_file:
+ with closing(medium_file):
medium.save(medium_file, "JPEG", quality=90)
medium_processed = True
@@ -84,7 +91,7 @@ def process_media_initial(media_id):
with queued_file:
original_filepath = create_pub_filepath(entry, queued_filepath[-1])
- with mgg.public_store.get_file(original_filepath, 'wb') as original_file:
+ with closing(mgg.public_store.get_file(original_filepath, 'wb')) as original_file:
original_file.write(queued_file.read())
mgg.queue_store.delete_file(queued_filepath)