mirror of
https://github.com/Hopiu/django-imagekit.git
synced 2026-04-22 22:14:43 +00:00
Store cachefile strategy on file; not generator
The file can appeal to the generator for the value, but it shouldn't require it; it just does that as a convenience.
This commit is contained in:
parent
d5d5fc0550
commit
06dd238993
3 changed files with 14 additions and 6 deletions
|
|
@ -15,7 +15,7 @@ class ImageCacheFile(BaseIKFile, ImageFile):
|
|||
to be deferred until the time that the cache file strategy requires it.
|
||||
|
||||
"""
|
||||
def __init__(self, generator, name=None, storage=None, cachefile_backend=None):
|
||||
def __init__(self, generator, name=None, storage=None, cachefile_backend=None, cachefile_strategy=None):
|
||||
"""
|
||||
:param generator: The object responsible for generating a new image.
|
||||
:param name: The filename
|
||||
|
|
@ -23,6 +23,8 @@ class ImageCacheFile(BaseIKFile, ImageFile):
|
|||
file.
|
||||
:param cachefile_backend: The object responsible for managing the
|
||||
state of the file.
|
||||
:param cachefile_strategy: The object responsible for handling events
|
||||
for this file.
|
||||
|
||||
"""
|
||||
self.generator = generator
|
||||
|
|
@ -43,6 +45,12 @@ class ImageCacheFile(BaseIKFile, ImageFile):
|
|||
or getattr(generator, 'cachefile_backend', None)
|
||||
or get_singleton(settings.IMAGEKIT_DEFAULT_CACHEFILE_BACKEND,
|
||||
'cache file backend'))
|
||||
self.cachefile_strategy = (
|
||||
cachefile_strategy
|
||||
or getattr(generator, 'cachefile_strategy', None)
|
||||
or get_singleton(settings.IMAGEKIT_DEFAULT_CACHEFILE_STRATEGY,
|
||||
'cache file strategy')
|
||||
)
|
||||
|
||||
super(ImageCacheFile, self).__init__(storage=storage)
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class GeneratorRegistry(object):
|
|||
# FIXME: I guess this means you can't register functions?
|
||||
if generator.__class__ in self._generators.values():
|
||||
# Only invoke the strategy method for registered generators.
|
||||
call_strategy_method(generator, 'before_access', file=file)
|
||||
call_strategy_method(file, 'before_access')
|
||||
|
||||
|
||||
class SourceGroupRegistry(object):
|
||||
|
|
@ -105,7 +105,7 @@ class SourceGroupRegistry(object):
|
|||
|
||||
for spec in specs:
|
||||
file = ImageCacheFile(spec)
|
||||
call_strategy_method(spec, callback_name, file=file)
|
||||
call_strategy_method(file, callback_name)
|
||||
|
||||
|
||||
class CacheFileRegistry(object):
|
||||
|
|
|
|||
|
|
@ -124,11 +124,11 @@ def generate(generator):
|
|||
return File(content)
|
||||
|
||||
|
||||
def call_strategy_method(generator, method_name, *args, **kwargs):
|
||||
strategy = getattr(generator, 'cachefile_strategy', None)
|
||||
def call_strategy_method(file, method_name):
|
||||
strategy = getattr(file, 'cachefile_strategy', None)
|
||||
fn = getattr(strategy, method_name, None)
|
||||
if fn is not None:
|
||||
fn(*args, **kwargs)
|
||||
fn(file)
|
||||
|
||||
|
||||
def sanitize_cache_key(key):
|
||||
|
|
|
|||
Loading…
Reference in a new issue