Files
deb-python-django-compressor/compressor/management/commands/compress.py
2011-01-28 01:29:34 +01:00

46 lines
1.8 KiB
Python

import sys
import warnings
from django.core.management.base import NoArgsCommand, CommandError
from optparse import make_option
from django.utils.simplejson.decoder import JSONDecoder
from compressor.offline import compress_offline
from compressor.conf import settings
class Command(NoArgsCommand):
"""Management command to offline generate the django_compressor cache content."""
option_list = NoArgsCommand.option_list + (
make_option('-c', '--context', default="", dest='context',
help="""Context to use while rendering the 'compress' nodes."""
""" (In JSON format; e.g.: '{"something": 1, "other": "value"}'"""),
make_option('-f', '--force', default=False, action="store_true", dest='force',
help="Force generation of offline cache even if "
"settings.COMPRESS and/or settings.COMPRESS_OFFLINE is not set."),
)
def handle_noargs(self, **options):
verbosity = int(options.get("verbosity", 0))
if not settings.COMPRESS and not options.get("force"):
raise CommandError(
"Compressor is disabled. Set COMPRESS settting to True "
"(or DEBUG to False) to enable. (Use -f to override)")
if not settings.COMPRESS_OFFLINE:
if not options.get("force"):
raise CommandError(
"Aborting; COMPRESS_OFFLINE is not set. (Use -f to override)")
warnings.warn(
"COMPRESS_OFFLINE is not set. Offline generated cache will not be used.")
context = None
if "context" in options and options['context']:
try:
context = JSONDecoder().decode(options['context'])
except ValueError, e:
raise CommandError("Invalid context JSON specified.", e)
compress_offline(verbosity, context, sys.stdout)