From 8aeed6a16e3dad8f604357d974d098fc5c2262a0 Mon Sep 17 00:00:00 2001 From: Serafeim Papastefanos Date: Tue, 11 Mar 2014 21:53:50 +0200 Subject: [PATCH] Allow configurable image backend --- wagtail/wagtailimages/models.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/wagtail/wagtailimages/models.py b/wagtail/wagtailimages/models.py index f15556d95..f62f62cd9 100644 --- a/wagtail/wagtailimages/models.py +++ b/wagtail/wagtailimages/models.py @@ -69,7 +69,11 @@ class AbstractImage(models.Model, TagSearchable): rendition = self.renditions.get(filter=filter) except ObjectDoesNotExist: file_field = self.file - generated_image_file = filter.process_image(file_field.file) + + # If we have a backend attribute then pass it to process + # image - else pass 'default' + backend_name = getattr(self, 'backend', 'default') + generated_image_file = filter.process_image(file_field.file, backend_name=backend_name) rendition, created = self.renditions.get_or_create( filter=filter, defaults={'file': generated_image_file}) @@ -173,19 +177,21 @@ class Filter(models.Model): except (ValueError, KeyError): raise ValueError("Invalid image filter spec: %r" % self.spec) - def process_image(self, input_file): + def process_image(self, input_file, backend_name='default'): """ Given an input image file as a django.core.files.File object, generate an output image with this filter applied, returning it as another django.core.files.File object """ - # TODO: Pass default this as a parameter - backend = get_image_backend('default') + backend = get_image_backend(backend_name) if not self.method: self._parse_spec_string() + # If file is closed, open it + if input_file.closed: + input_file.open() image = backend.open_image(input_file) file_format = image.format