"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:
committed by
Rodney Ewing
parent
58bacb33ac
commit
85ead8ac3c
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user