diff options
author | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2013-01-23 19:44:28 +0100 |
---|---|---|
committer | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2013-02-08 10:05:42 +0100 |
commit | 93b14fc300618e8b2c4ebfd54b9c59369ce0f417 (patch) | |
tree | 6c2c73bd2ce5a1671884913f12bab5cf2aec3abd /mediagoblin/processing | |
parent | 9d7c69fb74283d15589d8ed970d5b3bd1cfee2f0 (diff) | |
download | mediagoblin-93b14fc300618e8b2c4ebfd54b9c59369ce0f417.tar.lz mediagoblin-93b14fc300618e8b2c4ebfd54b9c59369ce0f417.tar.xz mediagoblin-93b14fc300618e8b2c4ebfd54b9c59369ce0f417.zip |
Implement ProcessingState class and use for images
The idea is to have a class that has the knowledge of the
currently being processed media and also has tools for
that.
The long term idea is to make reprocessing easier by for
example hiding the way the original comes into the
processing code.
Diffstat (limited to 'mediagoblin/processing')
-rw-r--r-- | mediagoblin/processing/__init__.py | 31 | ||||
-rw-r--r-- | mediagoblin/processing/task.py | 9 |
2 files changed, 37 insertions, 3 deletions
diff --git a/mediagoblin/processing/__init__.py b/mediagoblin/processing/__init__.py index e2bc1a13..738378b8 100644 --- a/mediagoblin/processing/__init__.py +++ b/mediagoblin/processing/__init__.py @@ -74,6 +74,37 @@ class FilenameBuilder(object): ext=self.ext) +class ProcessingState(object): + def __init__(self, entry): + self.entry = entry + self.workbench = None + self.queued_filename = None + + # Monkey patch us onto the entry + entry.proc_state = self + + def set_workbench(self, wb): + self.workbench = wb + + def get_queued_filename(self): + """ + Get the a filename for the original, on local storage + """ + if self.queued_filename is not None: + return self.queued_filename + queued_filepath = self.entry.queued_media_file + queued_filename = self.workbench.localized_file( + mgg.queue_store, queued_filepath, + 'source') + self.queued_filename = queued_filename + return queued_filename + + def delete_queue_file(self): + queued_filepath = self.entry.queued_media_file + mgg.queue_store.delete_file(queued_filepath) + self.entry.queued_media_file = [] + + def mark_entry_failed(entry_id, exc): """ Mark a media entry as having failed in its conversion. diff --git a/mediagoblin/processing/task.py b/mediagoblin/processing/task.py index e9bbe084..8614c673 100644 --- a/mediagoblin/processing/task.py +++ b/mediagoblin/processing/task.py @@ -22,7 +22,7 @@ from celery import registry, task from mediagoblin import mg_globals as mgg from mediagoblin.db.models import MediaEntry -from mediagoblin.processing import mark_entry_failed, BaseProcessingFail +from . import mark_entry_failed, BaseProcessingFail, ProcessingState from mediagoblin.tools.processing import json_processing_callback _log = logging.getLogger(__name__) @@ -85,8 +85,11 @@ class ProcessMedia(task.Task): _log.debug('Processing {0}'.format(entry)) - # run the processing code - entry.media_manager['processor'](entry) + proc_state = ProcessingState(entry) + with mgg.workbench_manager.create() as workbench: + proc_state.set_workbench(workbench) + # run the processing code + entry.media_manager['processor'](entry) # We set the state to processed and save the entry here so there's # no need to save at the end of the processing stage, probably ;) |