aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mediagoblin/gmg_commands/reprocess.py19
-rw-r--r--mediagoblin/processing/__init__.py5
2 files changed, 21 insertions, 3 deletions
diff --git a/mediagoblin/gmg_commands/reprocess.py b/mediagoblin/gmg_commands/reprocess.py
index 34311f6d..a3c732b9 100644
--- a/mediagoblin/gmg_commands/reprocess.py
+++ b/mediagoblin/gmg_commands/reprocess.py
@@ -24,7 +24,8 @@ from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
from mediagoblin.tools.pluginapi import hook_handle
from mediagoblin.processing import (
ProcessorDoesNotExist, ProcessorNotEligible,
- get_entry_and_processing_manager, get_processing_manager_for_type)
+ get_entry_and_processing_manager, get_processing_manager_for_type,
+ ProcessingManagerDoesNotExist)
def reprocess_parser_setup(subparser):
@@ -307,6 +308,7 @@ def run(args):
reprocess_action=args.reprocess_command,
reprocess_info=reprocess_request)
+
def bulk_run(args):
pass
@@ -317,8 +319,19 @@ def thumbs(args):
def initial(args):
- #TODO initial processing on all failed media
- pass
+ """
+ Reprocess all failed media
+ """
+ query = MediaEntry.query.filter_by(state='failed')
+
+ for entry in query:
+ try:
+ media_entry, manager = get_entry_and_processing_manager(entry.id)
+ run_process_media(
+ media_entry,
+ reprocess_action='initial')
+ except ProcessingManagerDoesNotExist:
+ print 'No such processing manager for {0}'.format(entry.media_type)
def reprocess(args):
diff --git a/mediagoblin/processing/__init__.py b/mediagoblin/processing/__init__.py
index 1930a480..0c13e807 100644
--- a/mediagoblin/processing/__init__.py
+++ b/mediagoblin/processing/__init__.py
@@ -174,6 +174,8 @@ class MediaProcessor(object):
class ProcessingKeyError(Exception): pass
class ProcessorDoesNotExist(ProcessingKeyError): pass
class ProcessorNotEligible(ProcessingKeyError): pass
+class ProcessingManagerDoesNotExist(ProcessingKeyError): pass
+
class ProcessingManager(object):
@@ -265,6 +267,9 @@ def get_processing_manager_for_type(media_type):
Get the appropriate media manager for this type
"""
manager_class = hook_handle(('reprocess_manager', media_type))
+ if not manager_class:
+ raise ProcessingManagerDoesNotExist(
+ "A processing manager does not exist for {0}".format(media_type))
manager = manager_class()
return manager