camp/photologue/management/commands/plcache.py
2025-03-24 11:35:33 +00:00

41 lines
1.4 KiB
Python

from django.core.management.base import BaseCommand, CommandError
from photologue.models import ImageModel, PhotoSize
class Command(BaseCommand):
help = 'Manages Photologue cache file for the given sizes.'
def add_arguments(self, parser):
parser.add_argument('sizes',
nargs='*',
type=str,
help='Name of the photosize.')
parser.add_argument('--reset',
action='store_true',
default=False,
dest='reset',
help='Reset photo cache before generating.')
def handle(self, *args, **options):
reset = options['reset']
sizes = options['sizes']
if not sizes:
photosizes = PhotoSize.objects.all()
else:
photosizes = PhotoSize.objects.filter(name__in=sizes)
if not len(photosizes):
raise CommandError('No photo sizes were found.')
print('Caching photos, this may take a while...')
for cls in ImageModel.__subclasses__():
for photosize in photosizes:
print('Cacheing %s size images' % photosize.name)
for obj in cls.objects.all():
if reset:
obj.remove_size(photosize)
obj.create_size(photosize)