You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.4 KiB
46 lines
1.4 KiB
from __future__ import print_function
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
from optparse import make_option
|
|
from photologue.models import PhotoSize, ImageModel
|
|
|
|
|
|
class Command(BaseCommand):
|
|
option_list = BaseCommand.option_list + (
|
|
make_option('--reset', '-r', action='store_true', dest='reset', help='Reset photo cache before generating'),
|
|
)
|
|
|
|
help = ('Manages Photologue cache file for the given sizes.')
|
|
args = '[sizes]'
|
|
|
|
requires_model_validation = True
|
|
can_import_settings = True
|
|
|
|
def handle(self, *args, **options):
|
|
return create_cache(args, options)
|
|
|
|
|
|
def create_cache(sizes, options):
|
|
"""
|
|
Creates the cache for the given files
|
|
"""
|
|
reset = options.get('reset', None)
|
|
|
|
size_list = [size.strip(' ,') for size in sizes]
|
|
|
|
if len(size_list) < 1:
|
|
sizes = PhotoSize.objects.filter(pre_cache=True)
|
|
else:
|
|
sizes = PhotoSize.objects.filter(name__in=size_list)
|
|
|
|
if not len(sizes):
|
|
raise CommandError('No photo sizes were found.')
|
|
|
|
print('Caching photos, this may take a while...')
|
|
|
|
for cls in ImageModel.__subclasses__():
|
|
for photosize in sizes:
|
|
print('Cacheing %s size images' % photosize.name)
|
|
for obj in cls.objects.all():
|
|
if reset:
|
|
obj.remove_size(photosize)
|
|
obj.create_size(photosize)
|
|
|