"initial" reprocessing subcommand now works!

We are on our way now to a working reprocessing system under this
redesign!

This commit sponsored by Bjarni Rúnar Einarsson.  Thank you!
This commit is contained in:
Christopher Allan Webber
2013-08-09 12:13:53 -05:00
committed by Rodney Ewing
parent 58bacb33ac
commit 85ead8ac3c
4 changed files with 100 additions and 11 deletions

View File

@@ -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,
}

View File

@@ -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