From d1e9913b71a6f3b7bb41f5eee1051093b92fcd8a Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Fri, 9 Aug 2013 17:30:52 -0500 Subject: [PATCH] Should be enough to get to the point where you can actually initialize a processing command now. However, it doesn't celery task-ify it... This commit sponsored by Catalin Cosovanu. Thank you! --- mediagoblin/gmg_commands/reprocess.py | 9 +++++---- mediagoblin/media_types/image/processing.py | 6 ++++-- mediagoblin/processing/__init__.py | 16 ++++++++++++++-- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/mediagoblin/gmg_commands/reprocess.py b/mediagoblin/gmg_commands/reprocess.py index 0d8db858..6d04427e 100644 --- a/mediagoblin/gmg_commands/reprocess.py +++ b/mediagoblin/gmg_commands/reprocess.py @@ -262,7 +262,8 @@ def run(args): manager_class = hook_handle(('reprocess_manager', media_type)) manager = manager_class() - # TOOD: Specify in error + # TODO: (maybe?) This could probably be handled entirely by the + # processor class... try: processor_class = manager.get_processor( args.reprocess_command, media_entry) @@ -277,9 +278,9 @@ def run(args): reprocess_parser = processor_class.generate_parser() reprocess_args = reprocess_parser.parse_args(args.reprocess_args) - - import pdb - pdb.set_trace() + reprocess_request = processor_class.args_to_request(reprocess_args) + processor = processor_class(manager, media_entry) + processor.process(**reprocess_request) def reprocess(args): diff --git a/mediagoblin/media_types/image/processing.py b/mediagoblin/media_types/image/processing.py index 575e9f5f..83b4adff 100644 --- a/mediagoblin/media_types/image/processing.py +++ b/mediagoblin/media_types/image/processing.py @@ -26,7 +26,8 @@ from mediagoblin import mg_globals as mgg from mediagoblin.db.models import MediaEntry from mediagoblin.processing import ( BadMediaFail, FilenameBuilder, - MediaProcessor, ProcessingManager) + MediaProcessor, ProcessingManager, + request_from_args) from mediagoblin.submit.lib import run_process_media from mediagoblin.tools.exif import exif_fix_image_orientation, \ extract_exif, clean_exif, get_gps_data, get_useful, \ @@ -356,7 +357,8 @@ class InitialProcessor(CommonImageProcessor): @classmethod def args_to_request(cls, args): - raise NotImplementedError + return request_from_args( + args, ['width', 'height']) diff --git a/mediagoblin/processing/__init__.py b/mediagoblin/processing/__init__.py index 6ef203cb..1c8f7202 100644 --- a/mediagoblin/processing/__init__.py +++ b/mediagoblin/processing/__init__.py @@ -112,8 +112,9 @@ class MediaProcessor(object): # action this MediaProcessor provides description = None - def __init__(self, manager): + def __init__(self, manager, media_entry): self.manager = manager + self.media_entry = media_entry # Should be initialized at time of processing, at least self.workbench = None @@ -138,7 +139,7 @@ class MediaProcessor(object): raise NotImplementedError @classmethod - def parser_to_request(cls, parser): + def args_to_request(cls, args): raise NotImplementedError ########################################## @@ -214,6 +215,17 @@ class ProcessingManager(object): pass +def request_from_args(args, which_args): + """ + Generate a request from the values of some argparse parsed args + """ + request = {} + for arg in which_args: + request[arg] = getattr(args, arg) + + return request + + class ProcessingState(object): """ The first and only argument to the "processor" of a media type -- 2.25.1