aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/media_types
diff options
context:
space:
mode:
authorxray7224 <xray7224@googlemail.com>2013-10-10 20:19:58 +0100
committerJessica Tallon <jessica@megworld.co.uk>2014-07-22 23:13:15 +0100
commit7810817caf73bcc0dcdfe1cec249c86e3e77c148 (patch)
tree230f7c3fb51d968cb23718d16305a0c152d97871 /mediagoblin/media_types
parent3c3fa5e7bfd60fc80215c2c96ccf3c68be7b424e (diff)
downloadmediagoblin-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__.py28
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: