From 85ead8ac3cf59aeee12ddd3b33ecfeb03c3aa946 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Fri, 9 Aug 2013 12:13:53 -0500 Subject: "initial" reprocessing subcommand now works! MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We are on our way now to a working reprocessing system under this redesign! This commit sponsored by Bjarni RĂșnar Einarsson. Thank you! --- mediagoblin/media_types/image/__init__.py | 6 +-- mediagoblin/media_types/image/processing.py | 64 ++++++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 4 deletions(-) (limited to 'mediagoblin/media_types') diff --git a/mediagoblin/media_types/image/__init__.py b/mediagoblin/media_types/image/__init__.py index 17689393..774b9bfa 100644 --- a/mediagoblin/media_types/image/__init__.py +++ b/mediagoblin/media_types/image/__init__.py @@ -18,7 +18,7 @@ import logging from mediagoblin.media_types import MediaManagerBase from mediagoblin.media_types.image.processing import ProcessImage, \ - sniff_handler + sniff_handler, ImageProcessingManager from mediagoblin.tools import pluginapi _log = logging.getLogger(__name__) @@ -72,6 +72,6 @@ hooks = { 'get_media_type_and_manager': get_media_type_and_manager, 'sniff_handler': sniff_handler, ('media_manager', MEDIA_TYPE): lambda: ImageMediaManager, - ('reprocess_action', MEDIA_TYPE): ProcessImage().reprocess_action, - ('media_reprocess', MEDIA_TYPE): ProcessImage().media_reprocess, + ('reprocess_manager', MEDIA_TYPE): lambda: ImageProcessingManager, + # ('media_reprocess', MEDIA_TYPE): ProcessImage().media_reprocess, } diff --git a/mediagoblin/media_types/image/processing.py b/mediagoblin/media_types/image/processing.py index c97811b1..ea372e76 100644 --- a/mediagoblin/media_types/image/processing.py +++ b/mediagoblin/media_types/image/processing.py @@ -24,7 +24,9 @@ import argparse from mediagoblin import mg_globals as mgg from mediagoblin.db.models import MediaEntry -from mediagoblin.processing import BadMediaFail, FilenameBuilder +from mediagoblin.processing import ( + BadMediaFail, FilenameBuilder, + MediaProcessor, ProcessingManager) 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, \ @@ -302,6 +304,66 @@ class ProcessImage(object): return reprocess_info + +class CommonImageProcessor(MediaProcessor): + """ + Provides a base for various media processing steps + """ + # Common resizing step + def resize_step(self): + pass + + def _add_width_height_args(self, parser): + parser.add_argument( + "--width", default=None, + help=( + "Width of the resized image (if not using defaults)")) + parser.add_argument( + "--height", default=None, + help=( + "Height of the resized image (if not using defaults)")) + + +class InitialProcessor(CommonImageProcessor): + """ + Initial processing step for new images + """ + name = "initial" + description = "Initial processing" + + @classmethod + def media_is_eligibile(self, media_entry): + """ + Determine if this media type is eligible for processing + """ + return media_entry.state in ( + "unprocessed", "failed") + + ############################### + # Command line interface things + ############################### + + @classmethod + def generate_parser(self): + parser = argparse.ArgumentParser( + description=self.description) + + self._add_width_height_args(parser) + + return parser + + @classmethod + def args_to_request(self, args): + raise NotImplementedError + + + +class ImageProcessingManager(ProcessingManager): + def __init__(self): + super(self.__class__, self).__init__() + self.add_processor(InitialProcessor) + + if __name__ == '__main__': import sys import pprint -- cgit v1.2.3