mirror of
https://github.com/Hopiu/django-imagekit.git
synced 2026-04-26 07:54:41 +00:00
Previously, ImageSpecFile was a file-like object, but didn't actually extend any of the file classes. Because of this, some of Django's file- handling code was duplicated. More importantly, instances didn't always behave as one might expect (if one were familiar with ImageFields), particularly when the source image was empty. This could have been especially confusing in templates. (For example, because ImageSpecFields whose source images didn't exist were still truthy.)
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
"""Flushes the cached ImageKit images.
|
|
|
|
"""
|
|
|
|
from django.db.models.loading import cache
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
from optparse import make_option
|
|
from imagekit.utils import get_spec_files
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = ('Clears all ImageKit cached files.')
|
|
args = '[apps]'
|
|
requires_model_validation = True
|
|
can_import_settings = True
|
|
|
|
def handle(self, *args, **options):
|
|
return flush_cache(args, options)
|
|
|
|
def flush_cache(apps, options):
|
|
apps = [a.strip(',') for a in apps]
|
|
if apps:
|
|
for app_label in apps:
|
|
app = cache.get_app(app_label)
|
|
for model in [m for m in cache.get_models(app)]:
|
|
print 'Flushing cache for "%s.%s"' % (app_label, model.__name__)
|
|
for obj in model.objects.order_by('-id'):
|
|
for spec_file in get_spec_files(obj):
|
|
if spec_file is not None:
|
|
spec_file.delete(save=False)
|
|
if spec_file.field.pre_cache:
|
|
spec_file._create()
|
|
else:
|
|
print 'Please specify one or more app names'
|