From 61557b41169f0656063c557735ef62908a5fcaab Mon Sep 17 00:00:00 2001 From: Marcin Nowak Date: Sun, 9 Oct 2016 19:34:55 +0200 Subject: [PATCH] add possibility to use custom storage via `get_thumbnail()` --- docs/examples.rst | 2 ++ sorl/thumbnail/base.py | 6 ++++-- sorl/thumbnail/templatetags/thumbnail.py | 5 ++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/examples.rst b/docs/examples.rst index 5eb6be04b..4d942ac16 100644 --- a/docs/examples.rst +++ b/docs/examples.rst @@ -180,3 +180,5 @@ Store:: delete(my_file) + + diff --git a/sorl/thumbnail/base.py b/sorl/thumbnail/base.py index c9ed177b7..8fd84b0b5 100644 --- a/sorl/thumbnail/base.py +++ b/sorl/thumbnail/base.py @@ -74,8 +74,10 @@ def get_thumbnail(self, file_, geometry_string, **options): """ logger.debug('Getting thumbnail for file [%s] at [%s]', file_, geometry_string) + storage = options.pop('storage', default.storage) + if file_: - source = ImageFile(file_) + source = ImageFile(file_, storage=storage) elif settings.THUMBNAIL_DUMMY: return DummyImageFile(geometry_string) else: @@ -97,7 +99,7 @@ def get_thumbnail(self, file_, geometry_string, **options): options.setdefault(key, value) name = self._get_thumbnail_filename(source, geometry_string, options) - thumbnail = ImageFile(name, default.storage) + thumbnail = ImageFile(name, storage) cached = default.kvstore.get(thumbnail) if cached: diff --git a/sorl/thumbnail/templatetags/thumbnail.py b/sorl/thumbnail/templatetags/thumbnail.py index 715fe998d..3a78247b3 100644 --- a/sorl/thumbnail/templatetags/thumbnail.py +++ b/sorl/thumbnail/templatetags/thumbnail.py @@ -123,6 +123,9 @@ def __init__(self, parser, token): self.nodelist_empty = parser.parse(('endthumbnail',)) parser.delete_first_token() + def _get_thumbnail(self, file_, geometry, **options): + return get_thumbnail(file_, geometry, **options) + def _render(self, context): file_ = self.file_.resolve(context) geometry = self.geometry.resolve(context) @@ -135,7 +138,7 @@ def _render(self, context): else: options[key] = value - thumbnail = get_thumbnail(file_, geometry, **options) + thumbnail = self._get_thumbnail(file_, geometry, **options) if not thumbnail or (isinstance(thumbnail, DummyImageFile) and self.nodelist_empty): if self.nodelist_empty: