110 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from __future__ import unicode_literals
 | |
| import os
 | |
| from django.conf import settings
 | |
| from django.core.exceptions import ImproperlyConfigured
 | |
| 
 | |
| from appconf import AppConf
 | |
| 
 | |
| 
 | |
| class CompressorConf(AppConf):
 | |
|     # Main switch
 | |
|     ENABLED = not settings.DEBUG
 | |
|     # Allows changing verbosity from the settings.
 | |
|     VERBOSE = False
 | |
|     # GET variable that disables compressor e.g. "nocompress"
 | |
|     DEBUG_TOGGLE = 'None'
 | |
|     # the backend to use when parsing the JavaScript or Stylesheet files
 | |
|     PARSER = 'compressor.parser.AutoSelectParser'
 | |
|     OUTPUT_DIR = 'CACHE'
 | |
|     STORAGE = 'compressor.storage.CompressorFileStorage'
 | |
| 
 | |
|     CSS_COMPRESSOR = 'compressor.css.CssCompressor'
 | |
|     JS_COMPRESSOR = 'compressor.js.JsCompressor'
 | |
| 
 | |
|     URL = None
 | |
|     ROOT = None
 | |
| 
 | |
|     CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter']
 | |
|     CSS_HASHING_METHOD = 'mtime'
 | |
| 
 | |
|     JS_FILTERS = ['compressor.filters.jsmin.JSMinFilter']
 | |
|     PRECOMPILERS = (
 | |
|         # ('text/coffeescript', 'coffee --compile --stdio'),
 | |
|         # ('text/less', 'lessc {infile} {outfile}'),
 | |
|         # ('text/x-sass', 'sass {infile} {outfile}'),
 | |
|         # ('text/stylus', 'stylus < {infile} > {outfile}'),
 | |
|         # ('text/x-scss', 'sass --scss {infile} {outfile}'),
 | |
|     )
 | |
|     CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
 | |
|     CLOSURE_COMPILER_ARGUMENTS = ''
 | |
|     CSSTIDY_BINARY = 'csstidy'
 | |
|     CSSTIDY_ARGUMENTS = '--template=highest'
 | |
|     YUI_BINARY = 'java -jar yuicompressor.jar'
 | |
|     YUI_CSS_ARGUMENTS = ''
 | |
|     YUI_JS_ARGUMENTS = ''
 | |
|     DATA_URI_MAX_SIZE = 1024
 | |
| 
 | |
|     # the cache backend to use
 | |
|     CACHE_BACKEND = None
 | |
|     # the dotted path to the function that creates the cache key
 | |
|     CACHE_KEY_FUNCTION = 'compressor.cache.simple_cachekey'
 | |
|     # rebuilds the cache every 30 days if nothing has changed.
 | |
|     REBUILD_TIMEOUT = 60 * 60 * 24 * 30  # 30 days
 | |
|     # the upper bound on how long any compression should take to be generated
 | |
|     # (used against dog piling, should be a lot smaller than REBUILD_TIMEOUT
 | |
|     MINT_DELAY = 30  # seconds
 | |
|     # check for file changes only after a delay
 | |
|     MTIME_DELAY = 10  # seconds
 | |
|     # enables the offline cache -- also filled by the compress command
 | |
|     OFFLINE = False
 | |
|     # invalidates the offline cache after one year
 | |
|     OFFLINE_TIMEOUT = 60 * 60 * 24 * 365  # 1 year
 | |
|     # The context to be used when compressing the files "offline"
 | |
|     OFFLINE_CONTEXT = {}
 | |
|     # The name of the manifest file (e.g. filename.ext)
 | |
|     OFFLINE_MANIFEST = 'manifest.json'
 | |
|     # The Context to be used when TemplateFilter is used
 | |
|     TEMPLATE_FILTER_CONTEXT = {}
 | |
| 
 | |
|     class Meta:
 | |
|         prefix = 'compress'
 | |
| 
 | |
|     def configure_root(self, value):
 | |
|         # Uses Django's STATIC_ROOT by default
 | |
|         if value is None:
 | |
|             value = settings.STATIC_ROOT
 | |
|         if value is None:
 | |
|             raise ImproperlyConfigured("COMPRESS_ROOT setting must be set")
 | |
|         return os.path.normcase(os.path.abspath(value))
 | |
| 
 | |
|     def configure_url(self, value):
 | |
|         # Uses Django's STATIC_URL by default
 | |
|         if value is None:
 | |
|             value = settings.STATIC_URL
 | |
|         if not value.endswith('/'):
 | |
|             raise ImproperlyConfigured("URL settings (e.g. COMPRESS_URL) "
 | |
|                                        "must have a trailing slash")
 | |
|         return value
 | |
| 
 | |
|     def configure_cache_backend(self, value):
 | |
|         if value is None:
 | |
|             value = 'default'
 | |
|         return value
 | |
| 
 | |
|     def configure_offline_context(self, value):
 | |
|         if not value:
 | |
|             value = {'STATIC_URL': settings.STATIC_URL}
 | |
|         return value
 | |
| 
 | |
|     def configure_template_filter_context(self, value):
 | |
|         if not value:
 | |
|             value = {'STATIC_URL': settings.STATIC_URL}
 | |
|         return value
 | |
| 
 | |
|     def configure_precompilers(self, value):
 | |
|         if not isinstance(value, (list, tuple)):
 | |
|             raise ImproperlyConfigured("The COMPRESS_PRECOMPILERS setting "
 | |
|                                        "must be a list or tuple. Check for "
 | |
|                                        "missing commas.")
 | |
|         return value
 | 
