Move filename generation to generator

This commit is contained in:
Matthew Tretter 2012-12-01 22:09:34 -05:00
parent 20c900df4a
commit 236eea8459
2 changed files with 16 additions and 13 deletions

View file

@ -4,8 +4,8 @@ from django.core.files.images import ImageFile
from django.utils.encoding import smart_str, smart_unicode
import os
from .signals import before_access
from .utils import (format_to_mimetype, format_to_extension,
extension_to_mimetype, get_logger, get_singleton)
from .utils import (format_to_mimetype, extension_to_mimetype, get_logger,
get_singleton)
class BaseIKFile(File):
@ -92,14 +92,8 @@ class GeneratedImageCacheFile(BaseIKFile, ImageFile):
'file storage backend')
super(GeneratedImageCacheFile, self).__init__(storage=storage)
def get_default_filename(self):
hash = self.generator.get_hash()
ext = format_to_extension(self.generator.format)
return os.path.join(settings.IMAGEKIT_CACHE_DIR,
'%s%s' % (hash, ext))
def _get_name(self):
return self._name or self.get_default_filename()
return self._name or self.generator.get_filename()
def _set_name(self, value):
self._name = value

View file

@ -7,7 +7,8 @@ from ..files import GeneratedImageCacheFile, IKContentFile
from ..imagecache.backends import get_default_image_cache_backend
from ..imagecache.strategies import StrategyWrapper
from ..processors import ProcessorPipeline
from ..utils import open_image, extension_to_format, img_to_fobj
from ..utils import (open_image, extension_to_format, img_to_fobj,
suggest_extension)
from ..registry import generator_registry, register
@ -40,9 +41,6 @@ class BaseImageSpec(object):
self.image_cache_backend = self.image_cache_backend or get_default_image_cache_backend()
self.image_cache_strategy = StrategyWrapper(self.image_cache_strategy)
def get_hash(self):
raise NotImplementedError
def generate(self, source_file, filename=None):
raise NotImplementedError
@ -91,6 +89,17 @@ class ImageSpec(BaseImageSpec):
self.kwargs = kwargs
super(ImageSpec, self).__init__()
def get_filename(self):
source_filename = self.kwargs['source_file'].name
ext = suggest_extension(source_filename, self.format)
return os.path.normpath(os.path.join(
settings.IMAGEKIT_CACHE_DIR,
os.path.splitext(source_filename)[0],
'%s%s' % (self.get_hash(), ext)))
return os.path.join(settings.IMAGEKIT_CACHE_DIR,
'%s%s' % (hash, ext))
def get_hash(self):
return md5(''.join([
pickle.dumps(self.kwargs),