From 8eb47d02d922fa90abd56729c6c6898f43cf7413 Mon Sep 17 00:00:00 2001 From: Elrond Date: Mon, 17 Dec 2012 20:05:37 +0100 Subject: Processing: Factor out prepare_entry. prepare_entry handles the task_id setup and generating a queue filename and file. it returns the queue file. --- mediagoblin/submit/lib.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'mediagoblin/submit/lib.py') diff --git a/mediagoblin/submit/lib.py b/mediagoblin/submit/lib.py index f174d4ea..6660eb53 100644 --- a/mediagoblin/submit/lib.py +++ b/mediagoblin/submit/lib.py @@ -17,7 +17,9 @@ import urllib import urllib2 import logging +import uuid from celery import registry +from werkzeug.utils import secure_filename from mediagoblin import mg_globals from mediagoblin.processing import mark_entry_failed @@ -27,6 +29,32 @@ from mediagoblin.processing.task import ProcessMedia _log = logging.getLogger(__name__) +def prepare_entry(request, entry, filename): + # We generate this ourselves so we know what the taks id is for + # retrieval later. + + # (If we got it off the task's auto-generation, there'd be + # a risk of a race condition when we'd save after sending + # off the task) + task_id = unicode(uuid.uuid4()) + entry.queued_task_id = task_id + + # Now store generate the queueing related filename + queue_filepath = request.app.queue_store.get_unique_filepath( + ['media_entries', + task_id, + secure_filename(filename)]) + + # queue appropriately + queue_file = request.app.queue_store.get_file( + queue_filepath, 'wb') + + # Add queued filename to the entry + entry.queued_media_file = queue_filepath + + return queue_file + + def run_process_media(entry): process_media = registry.tasks[ProcessMedia.name] try: -- cgit v1.2.3