mirror of
https://github.com/Hopiu/django-imagekit.git
synced 2026-03-21 15:40:23 +00:00
35 lines
1 KiB
Python
35 lines
1 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import absolute_import
|
|
|
|
from .base import InvalidImageCacheBackendError, Simple as SimpleBackend
|
|
|
|
|
|
def generate(model, pk, attr):
|
|
try:
|
|
instance = model._default_manager.get(pk=pk)
|
|
except model.DoesNotExist:
|
|
pass # The model was deleted since the task was scheduled. NEVER MIND!
|
|
else:
|
|
field_file = getattr(instance, attr)
|
|
field_file.delete(save=False)
|
|
field_file.generate(save=True)
|
|
|
|
|
|
class CeleryBackend(SimpleBackend):
|
|
"""
|
|
An image cache backend that uses celery to generate images.
|
|
|
|
"""
|
|
def __init__(self):
|
|
try:
|
|
from celery.task import task
|
|
except:
|
|
raise InvalidImageCacheBackendError("Celery validation backend requires the 'celery' library")
|
|
if not getattr(CeleryBackend, '_task', None):
|
|
CeleryBackend._task = task(generate)
|
|
|
|
def invalidate(self, file):
|
|
self._task.delay(file.instance.__class__, file.instance.pk, file.attname)
|
|
|
|
def clear(self, file):
|
|
file.delete(save=False)
|