aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/media_types
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2013-08-09 12:13:53 -0500
committerRodney Ewing <ewing.rj@gmail.com>2013-08-16 15:30:15 -0700
commit85ead8ac3cf59aeee12ddd3b33ecfeb03c3aa946 (patch)
treed41cbce28dab9eb632153ec7659137ad5b977567 /mediagoblin/media_types
parent58bacb33aca6505673f90460d31811ed487bcb4c (diff)
downloadmediagoblin-85ead8ac3cf59aeee12ddd3b33ecfeb03c3aa946.tar.lz
mediagoblin-85ead8ac3cf59aeee12ddd3b33ecfeb03c3aa946.tar.xz
mediagoblin-85ead8ac3cf59aeee12ddd3b33ecfeb03c3aa946.zip
"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!
Diffstat (limited to 'mediagoblin/media_types')
-rw-r--r--mediagoblin/media_types/image/__init__.py6
-rw-r--r--mediagoblin/media_types/image/processing.py64
2 files changed, 66 insertions, 4 deletions
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