From cea79ea2403391b7d324494290fdccde89f2bb0b Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 6 Apr 2011 16:54:33 -0400 Subject: [PATCH] When deleting staging file, it's cached preview is also deleted --- apps/converter/api.py | 9 ++++----- apps/documents/staging.py | 32 +++++++++++++++++++------------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/apps/converter/api.py b/apps/converter/api.py index cd69d592a3..e44f9f09ad 100644 --- a/apps/converter/api.py +++ b/apps/converter/api.py @@ -74,14 +74,15 @@ def execute_unoconv(input_filepath, output_filepath, arguments=''): """ -def cache_cleanup(input_filepath, size, page=0, format='jpg'): - filepath = create_image_cache_filename(input_filepath, size, page, format) +def cache_cleanup(input_filepath, size, quality=QUALITY_DEFAULT, page=0, format='jpg', extra_options=''): + filepath = create_image_cache_filename(input_filepath, size=size, page=page, format=format, quality=quality, extra_options=extra_options) try: os.remove(filepath) except OSError: pass -def create_image_cache_filename(input_filepath, quality=QUALITY_DEFAULT, extra_options='', *args, **kwargs): + +def create_image_cache_filename(input_filepath, *args, **kwargs): if input_filepath: temp_filename, separator = os.path.splitext(os.path.basename(input_filepath)) temp_path = os.path.join(TEMPORARY_DIRECTORY, temp_filename) @@ -89,8 +90,6 @@ def create_image_cache_filename(input_filepath, quality=QUALITY_DEFAULT, extra_o final_filepath = [] [final_filepath.append(str(arg)) for arg in args] final_filepath.extend(['%s_%s' % (key, value) for key, value in kwargs.items()]) - final_filepath.append(QUALITY_SETTINGS[quality]) - final_filepath.append(extra_options) temp_path += slugify('_'.join(final_filepath)) diff --git a/apps/documents/staging.py b/apps/documents/staging.py index 48109beae9..0a449e6c49 100644 --- a/apps/documents/staging.py +++ b/apps/documents/staging.py @@ -10,7 +10,7 @@ from documents.conf.settings import STAGING_DIRECTORY from documents.conf.settings import DEFAULT_TRANSFORMATIONS from documents.conf.settings import STAGING_FILES_PREVIEW_SIZE from converter import TRANFORMATION_CHOICES -from converter.api import convert#, in_image_cache, QUALITY_DEFAULT +from converter.api import convert, cache_cleanup HASH_FUNCTION = lambda x: hashlib.sha256(x).hexdigest() #TODO: Do benchmarks @@ -71,6 +71,8 @@ class StagingFile(object): raise Exception(ugettext(u'Unable to upload staging file: %s') % exc) def delete(self): + tranformation_string, errors = get_transformation_string(DEFAULT_TRANSFORMATIONS) + cache_cleanup(self.filepath, size=STAGING_FILES_PREVIEW_SIZE, extra_options=tranformation_string) try: os.unlink(self.filepath) except OSError, exc: @@ -80,17 +82,21 @@ class StagingFile(object): raise OSError(ugettext(u'Unable to delete staging file: %s') % exc) def preview(self): - transformation_list = [] - errors = [] - for transformation in DEFAULT_TRANSFORMATIONS: - try: - if transformation['name'] in TRANFORMATION_CHOICES: - output = TRANFORMATION_CHOICES[transformation['name']] % eval(transformation['arguments']) - transformation_list.append(output) - except Exception, e: - errors.append(e) - - tranformation_string = ' '.join(transformation_list) - + tranformation_string, errors = get_transformation_string(DEFAULT_TRANSFORMATIONS) output_file = convert(self.filepath, size=STAGING_FILES_PREVIEW_SIZE, extra_options=tranformation_string, cleanup_files=False) return output_file, errors + + +def get_transformation_string(transformations): + transformation_list = [] + errors = [] + for transformation in transformations: + try: + if transformation['name'] in TRANFORMATION_CHOICES: + output = TRANFORMATION_CHOICES[transformation['name']] % eval(transformation['arguments']) + transformation_list.append(output) + except Exception, e: + errors.append(e) + + tranformation_string = ' '.join(transformation_list) + return tranformation_string, errors