From 5976a512e68cfa6403333d790e2e842960253d23 Mon Sep 17 00:00:00 2001 From: Josh Ourisman Date: Tue, 28 Jun 2011 14:27:47 -0400 Subject: [PATCH] allowing any fields on the object to be specified for use in naming of generated images; default to allowing pk --- imagekit/options.py | 1 + imagekit/specs.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/imagekit/options.py b/imagekit/options.py index 90b9b64..cd3fc85 100644 --- a/imagekit/options.py +++ b/imagekit/options.py @@ -13,6 +13,7 @@ class Options(object): preprocessor_spec = None cache_dir = 'cache' save_count_as = None + cache_filename_fields = ['pk', ] cache_filename_format = "%(filename)s_%(specname)s.%(extension)s" admin_thumbnail_spec = 'admin_thumbnail' spec_module = 'imagekit.defaults' diff --git a/imagekit/specs.py b/imagekit/specs.py index 5fc80a7..40437a0 100644 --- a/imagekit/specs.py +++ b/imagekit/specs.py @@ -82,11 +82,17 @@ class Accessor(object): for processor in self.spec.processors: if issubclass(processor, processors.Format): extension = processor.extension + filename_format_dict = {'filename': filename, + 'specname': self.spec.name(), + 'extension': extension.lstrip('.')} + cache_filename_fields = self._obj._ik.cache_filename_fields + filename_format_dict.update(dict(zip( + cache_filename_fields, + [getattr(self._obj, field) for + field in cache_filename_fields]))) cache_filename = self._obj._ik.cache_filename_format % \ - {'pk': self._obj.pk, - 'filename': filename, - 'specname': self.spec.name(), - 'extension': extension.lstrip('.')} + filename_format_dict + if callable(self._obj._ik.cache_dir): return self._obj._ik.cache_dir(self._obj, filepath, cache_filename)