Use task_id in generating the queue file path
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 19 Feb 2012 11:13:26 +0000 (12:13 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Tue, 21 Feb 2012 19:47:26 +0000 (20:47 +0100)
The task_id is created anyway as a UUID. So it is very
unique per definition. The only thing needed for the queue
file path is a unique part.

Before the objectid of the MediaEntry was used instead. But
in the sql world the objectid is only available after an
"insert" on the db. And creating the queue_file_path
afterwards would require an "update" on the db. We can save
that. ... for now.

mediagoblin/submit/views.py

index 845400caaec04fc708a487b6f93eb442e4d1e890..df5b15c044ebd886d111e651489cd0a95dae21de 100644 (file)
@@ -78,11 +78,18 @@ def submit_start(request):
                 # Generate a slug from the title
                 entry.generate_slug()
 
+                # 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())
 
                 # Now store generate the queueing related filename
                 queue_filepath = request.app.queue_store.get_unique_filepath(
                     ['media_entries',
-                     unicode(entry._id),
+                     task_id,
                      secure_filename(filename)])
 
                 # queue appropriately
@@ -95,14 +102,7 @@ def submit_start(request):
                 # Add queued filename to the entry
                 entry.queued_media_file = queue_filepath
 
-                # 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
+                entry.queued_task_id = task_id
 
                 # Save now so we have this data before kicking off processing
                 entry.save(validate=True)