diff options
author | xray7224 <xray7224@googlemail.com> | 2013-10-10 20:19:58 +0100 |
---|---|---|
committer | Jessica Tallon <jessica@megworld.co.uk> | 2014-07-22 23:13:15 +0100 |
commit | 7810817caf73bcc0dcdfe1cec249c86e3e77c148 (patch) | |
tree | 230f7c3fb51d968cb23718d16305a0c152d97871 /mediagoblin/media_types | |
parent | 3c3fa5e7bfd60fc80215c2c96ccf3c68be7b424e (diff) | |
download | mediagoblin-7810817caf73bcc0dcdfe1cec249c86e3e77c148.tar.lz mediagoblin-7810817caf73bcc0dcdfe1cec249c86e3e77c148.tar.xz mediagoblin-7810817caf73bcc0dcdfe1cec249c86e3e77c148.zip |
Refactors api uploading to media managers
Diffstat (limited to 'mediagoblin/media_types')
-rw-r--r-- | mediagoblin/media_types/image/__init__.py | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/mediagoblin/media_types/image/__init__.py b/mediagoblin/media_types/image/__init__.py index 06e0f08f..0a77b0ce 100644 --- a/mediagoblin/media_types/image/__init__.py +++ b/mediagoblin/media_types/image/__init__.py @@ -19,7 +19,9 @@ import logging from mediagoblin.media_types import MediaManagerBase from mediagoblin.media_types.image.processing import sniff_handler, \ ImageProcessingManager - +from mediagoblin.tools.response import json_response +from mediagoblin.submit.lib import prepare_queue_task, run_process_media +from mediagoblin.notifications import add_comment_subscription _log = logging.getLogger(__name__) @@ -56,6 +58,30 @@ class ImageMediaManager(MediaManagerBase): except (KeyError, ValueError): return None + @staticmethod + def api_upload_request(request, file_data, entry): + """ This handles a image upload request """ + # Use the same kind of method from mediagoblin/submit/views:submit_start + entry.media_type = unicode(MEDIA_TYPE) + entry.title = unicode(request.args.get("title", file_data.filename)) + entry.description = unicode(request.args.get("description", "")) + entry.license = request.args.get("license", "") # not part of the standard API + + entry.generate_slug() + + queue_file = prepare_queue_task(request.app, entry, file_data.filename) + with queue_file: + queue_file.write(request.data) + + entry.save() + + feed_url = request.urlgen( + 'mediagoblin.user_pages.atom_feed', + qualified=True, user=request.user.username) + + run_process_media(entry, feed_url) + add_comment_subscription(request.user, entry) + return json_response(entry.serialize(request)) def get_media_type_and_manager(ext): if ext in ACCEPTED_EXTENSIONS: |