diff options
-rw-r--r-- | mediagoblin/db/migrations.py | 12 | ||||
-rw-r--r-- | mediagoblin/db/models.py | 3 | ||||
-rw-r--r-- | mediagoblin/submit/views.py | 11 |
3 files changed, 23 insertions, 3 deletions
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py index 8c088145..36bca5b3 100644 --- a/mediagoblin/db/migrations.py +++ b/mediagoblin/db/migrations.py @@ -53,6 +53,7 @@ def mediaentry_mediafiles_main_to_original(database): collection.save(document) + @RegisterMigration(3) def mediaentry_remove_thumbnail_file(database): """ @@ -61,4 +62,15 @@ def mediaentry_remove_thumbnail_file(database): database['media_entries'].update( {'thumbnail_file': {'$exists': True}}, {'$unset': {'thumbnail_file': 1}}, + + +@RegisterMigration(4) +def mediaentry_add_queued_task_id(database): + """ + Add the 'queued_task_id' field for entries that don't have it. + """ + collection = database['media_entries'] + collection.update( + {'queued_task_id': {'$exists': False}}, + {'$set': {'queued_task_id': None}}, multi=True) diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py index aff2a65b..0dcb6ce8 100644 --- a/mediagoblin/db/models.py +++ b/mediagoblin/db/models.py @@ -162,6 +162,8 @@ class MediaEntry(Document): queued for processing. This is stored in the mg_globals.queue_store storage system. + - queued_task_id: celery task id. Use this to fetch the task state. + - media_files: Files relevant to this that have actually been processed and are available for various types of display. Stored like: {'thumb': ['dir1', 'dir2', 'pic.png'} @@ -188,6 +190,7 @@ class MediaEntry(Document): # For now let's assume there can only be one main file queued # at a time 'queued_media_file': [unicode], + 'queued_task_id': unicode, # A dictionary of logical names to filepaths 'media_files': dict, diff --git a/mediagoblin/submit/views.py b/mediagoblin/submit/views.py index a3a58400..1e8c6a68 100644 --- a/mediagoblin/submit/views.py +++ b/mediagoblin/submit/views.py @@ -86,10 +86,15 @@ def submit_start(request): # Add queued filename to the entry entry['queued_media_file'] = queue_filepath - entry.save(validate=True) - # queue it for processing - process_media_initial.delay(unicode(entry['_id'])) + # Save now so we have this data before kicking off processing + entry.save(validate=False) + + result = process_media_initial.delay(unicode(entry['_id'])) + + # Save the task id + entry['queued_task_id'] = unicode(result.task_id) + entry.save(validate=True) add_message(request, SUCCESS, _('Woohoo! Submitted!')) |