started coding basics of new processing code
authorChristopher Allan Webber <cwebber@dustycloud.org>
Wed, 7 Aug 2013 20:01:46 +0000 (15:01 -0500)
committerRodney Ewing <ewing.rj@gmail.com>
Fri, 16 Aug 2013 22:30:15 +0000 (15:30 -0700)
mediagoblin/processing/__init__.py

index 5ce9281b584ed334e5e8707ca4dc607eb7745fd6..95f346d25bd3ec6c078cac7cf5a7966439abcbb2 100644 (file)
@@ -74,6 +74,58 @@ class FilenameBuilder(object):
                              ext=self.ext)
 
 
+
+
+class MediaProcessor(object):
+    # You MUST override this in the child MediaProcessor!
+    name = None
+
+    def __init__(self, manager):
+        self.manager = manager
+
+    def media_is_eligibile(self, media_entry):
+        raise NotImplementedError
+
+    def process(self):
+        raise NotImplementedError
+
+    def generate_parser(self):
+        raise NotImplementedError
+
+
+class ProcessingManager(object):
+    def __init__(self, entry):
+        self.entry = entry
+        # May merge these two classes soon....
+        self.state = ProcessingState(entry)
+
+        # Dict of all MediaProcessors of this media type
+        self.processors = {}
+
+    def add_processor(self, processor):
+        """
+        Add a processor class to this media type
+        """
+        name = processor.name
+        if name is None:
+            raise AttributeError("Processor class's .name attribute not set")
+        
+        self.processors[name] = processor
+
+    def list_eligible_processors(self):
+        """
+        List all processors that this media entry is eligible to be processed
+        for.
+        """
+        return [
+            processor
+            for processor in self.processors.keys()
+            if processor.media_is_eligible(self.entry)]
+
+    def process(self, processor):
+        pass
+
+
 class ProcessingState(object):
     """
     The first and only argument to the "processor" of a media type