web/lib/photologue/management/commands/plflush.py
changeset 5 10b1f6d8a5d2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/photologue/management/commands/plflush.py	Thu Jan 21 18:41:10 2010 +0100
@@ -0,0 +1,35 @@
+from django.core.management.base import BaseCommand, CommandError
+from optparse import make_option
+from photologue.models import PhotoSize, ImageModel
+
+class Command(BaseCommand):
+    help = ('Clears the Photologue cache 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):
+    """
+    Clears the cache for the given files
+    """
+    size_list = [size.strip(' ,') for size in sizes]
+
+    if len(size_list) < 1:
+        sizes = PhotoSize.objects.all()
+    else:
+        sizes = PhotoSize.objects.filter(name__in=size_list)
+
+    if not len(sizes):
+        raise CommandError('No photo sizes were found.')
+
+    print 'Flushing cache...'
+
+    for cls in ImageModel.__subclasses__():
+        for photosize in sizes:
+            print 'Flushing %s size images' % photosize.name
+            for obj in cls.objects.all():
+                obj.remove_size(photosize)