|
5
|
1 |
from django.core.management.base import BaseCommand, CommandError |
|
|
2 |
from optparse import make_option |
|
|
3 |
from photologue.models import PhotoSize, ImageModel |
|
|
4 |
|
|
|
5 |
class Command(BaseCommand): |
|
|
6 |
help = ('Clears the Photologue cache for the given sizes.') |
|
|
7 |
args = '[sizes]' |
|
|
8 |
|
|
|
9 |
requires_model_validation = True |
|
|
10 |
can_import_settings = True |
|
|
11 |
|
|
|
12 |
def handle(self, *args, **options): |
|
|
13 |
return create_cache(args, options) |
|
|
14 |
|
|
|
15 |
def create_cache(sizes, options): |
|
|
16 |
""" |
|
|
17 |
Clears the cache for the given files |
|
|
18 |
""" |
|
|
19 |
size_list = [size.strip(' ,') for size in sizes] |
|
|
20 |
|
|
|
21 |
if len(size_list) < 1: |
|
|
22 |
sizes = PhotoSize.objects.all() |
|
|
23 |
else: |
|
|
24 |
sizes = PhotoSize.objects.filter(name__in=size_list) |
|
|
25 |
|
|
|
26 |
if not len(sizes): |
|
|
27 |
raise CommandError('No photo sizes were found.') |
|
|
28 |
|
|
|
29 |
print 'Flushing cache...' |
|
|
30 |
|
|
|
31 |
for cls in ImageModel.__subclasses__(): |
|
|
32 |
for photosize in sizes: |
|
|
33 |
print 'Flushing %s size images' % photosize.name |
|
|
34 |
for obj in cls.objects.all(): |
|
|
35 |
obj.remove_size(photosize) |