aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/submit/lib.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/submit/lib.py')
-rw-r--r--mediagoblin/submit/lib.py28
1 files changed, 28 insertions, 0 deletions
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: