Changelog¶
v1.2 (in 08/03/2012)¶
Added compatibility with Django 1.4 and dropped support for Django 1.2.X.
Added contributing docs. Be sure to check them out and start contributing!
Moved CI to Travis: http://travis-ci.org/jezdez/django_compressor
Introduced a new compressed context dictionary that is passed to the templates that are responsible for rendering the compressed snippets.
This is a backwards-incompatible change if you’ve overridden any of the included templates:
- compressor/css_file.html
- compressor/css_inline.html
- compressor/js_file.html
- compressor/js_inline.html
The variables passed to those templates have been namespaced in a dictionary, so it’s easy to fix your own templates.
For example, the old compressor/js_file.html:
<script type="text/javascript" src="{{ url }}"></script>
The new compressor/js_file.html:
<script type="text/javascript" src="{{ compressed.url }}"></script>
Removed old templates named compressor/css.html and compressor/js.html that were originally left for backwards compatibility. If you’ve overridden them, just rename them to compressor/css_file.html or compressor/js_file.html and make sure you’ve accounted for the backwards incompatible change of the template context mentioned above.
Reverted an unfortunate change to the YUI filter that prepended 'java -jar' to the binary name, which doesn’t alway work, e.g. if the YUI compressor is shipped as a script like /usr/bin/yui-compressor.
Changed the sender parameter of the post_compress() signal to be either compressor.css.CssCompressor or compressor.js.JsCompressor for easier customization.
Correctly handle offline compressing files that are found in {% if %} template blocks.
Renamed the second option for the COMPRESS_CSS_HASHING_METHOD setting from 'hash' to 'content' to better describe what it does. The old name is also supported, as well as the default being 'mtime'.
Fixed CssAbsoluteFilter, src attributes in includes now get transformed.
Added a new hook to allow developers to completely bypass offline compression in CompressorNode subclasses: is_offline_compression_enabled.
Dropped versiontools from required dependencies again.
v1.1.2¶
- Fixed an installation issue related to versiontools.
v1.1.1¶
Fixed a stupid ImportError bug introduced in 1.1.
Fixed Jinja2 docs of since JINJA2_EXTENSIONS expects a class, not a module.
Fixed a Windows bug with regard to file resolving with staticfiles finders.
Stopped a potential memory leak when memoizing the rendered output.
Fixed the integration between staticfiles (e.g. in Django <= 1.3.1) and compressor which prevents the collectstatic management command to work.
Warning
Make sure to remove the path method of your custom remote storage class!
v1.1¶
Made offline compression completely independent from cache (by writing a manifest.json file).
You can now easily run the compress management command locally and transfer the COMPRESS_ROOT dir to your server.
Updated installation instructions to properly mention all dependencies, even those internally used.
Fixed a bug introduced in 1.0 which would prevent the proper deactivation of the compression in production.
Added a Jinja2 contrib extension.
Made sure the rel attribute of link tags can be mixed case.
Avoid overwriting context variables needed for compressor to work.
Stopped the compress management command to require model validation.
Added missing imports and fixed a few PEP 8 issues.
v1.0.1¶
- Fixed regression in compressor.utils.staticfiles compatibility module.
v1.0¶
BACKWARDS-INCOMPATIBLE Stopped swallowing exceptions raised by rendering the template tag in production (DEBUG = False). This has the potential to breaking lots of apps but on the other hand will help find bugs.
BACKWARDS-INCOMPATIBLE The default function to create the cache key stopped containing the server hostname. Instead the cache key now only has the form 'django_compressor.<KEY>'.
To revert to the previous way simply set the COMPRESS_CACHE_KEY_FUNCTION to 'compressor.cache.socket_cachekey'.
BACKWARDS-INCOMPATIBLE Renamed ambigously named COMPRESS_DATA_URI_MAX_SIZE setting to COMPRESS_DATA_URI_MAX_SIZE. It’s the maximum size the compressor.filters.datauri.DataUriFilter filter will embed files as data: URIs.
Added COMPRESS_CSS_HASHING_METHOD setting with the options 'mtime' (default) and 'hash' for the CssAbsoluteFilter filter. The latter uses the content of the file to calculate the cache-busting hash.
Added support for {{ block.super }} to compress management command.
Dropped Django 1.1.X support.
Fixed compiler filters on Windows.
Handle new-style cached template loaders in the compress management command.
Documented included filters.
Added Slim It filter.
Added new CallbackOutputFilter to ease the implementation of Python-based callback filters that only need to pass the content to a callable.
Make use of django-appconf for settings handling and versiontools for versions.
Uses the current context when rendering the render templates.
Added post_compress signal.
v0.9.2¶
- Fixed stdin handling of precompiler filter.
v0.9.1¶
- Fixed encoding related issue.
- Minor cleanups.
v0.9¶
- Fixed the precompiler support to also use the full file path instead of a temporarily created file.
- Enabled test coverage.
- Refactored caching and other utility code.
- Switched from SHA1 to MD5 for hash generation to lower the computational impact.
v0.8¶
- Replace naive jsmin.py with rJSmin (http://opensource.perlig.de/rjsmin/) and fixed a few problems with JavaScript comments.
- Fixed converting relative URLs in CSS files when running in debug mode.
Note
If you relied on the split_contents method of Compressor classes, please make sure a fourth item is returned in the iterable that denotes the base name of the file that is compressed.
v0.7.1¶
- Fixed import error when using the standalone django-staticfiles app.
v0.7¶
- Created new parser, HtmlParser, based on the stdlib HTMLParser module.
- Added a new default AutoSelectParser, which picks the LxmlParser if lxml is available and falls back to HtmlParser.
- Use unittest2 for testing goodness.
- Fixed YUI JavaScript filter argument handling.
- Updated bundled jsmin to use version by Dave St.Germain that was refactored for speed.
v0.6.4¶
- Fixed Closure filter argument handling.
v0.6.3¶
- Fixed options mangling in CompilerFilter initialization.
- Fixed tox configuration.
- Extended documentation and README.
- In the compress command ignore hidden files when looking for templates.
- Restructured utilities and added staticfiles compat layer.
- Restructered parsers and added a html5lib based parser.
v0.6.2¶
- Minor bugfixes that caused the compression not working reliably in development mode (e.g. updated files didn’t trigger a new compression).
v0.6.1¶
- Fixed staticfiles support to also use its finder API to find files during developement – when the static files haven’t been collected in STATIC_ROOT.
- Fixed regression with the COMPRESS setting, pre-compilation and staticfiles.
v0.6¶
Major improvements and a lot of bugfixes, some of which are:
New precompilation support, which allows compilation of files and hunks with easily configurable compilers before calling the actual output filters. See the COMPRESS_PRECOMPILERS for more details.
New staticfiles support. With the introduction of the staticfiles app to Django 1.3, compressor officially supports finding the files to compress using the app’s finder API. Have a look at the documentation about remote storages in case you want to use those together with compressor.
New compress management command which allows pre-running of what the compress template tag does. See the pre-compression docs for more information.
Various perfomance improvements by better caching and mtime cheking.
Deprecated COMPRESS_LESSC_BINARY setting because it’s now superseded by the COMPRESS_PRECOMPILERS setting. Just make sure to use the correct mimetype when linking to less files or adding inline code and add the following to your settings:
COMPRESS_PRECOMPILERS = ( ('text/less', 'lessc {infile} {outfile}'), )
Added cssmin filter (compressor.filters.CSSMinFilter) based on Zachary Voase’s Python port of the YUI CSS compression algorithm.
Reimplemented the dog-piling prevention.
Make sure the CssAbsoluteFilter works for relative paths.
Added inline render mode. See usage docs.
Added mtime_cache management command to add and/or remove all mtimes from the cache.
Moved docs to Read The Docs: http://django_compressor.readthedocs.org
Added optional compressor.storage.GzipCompressorFileStorage storage backend that gzips of the saved files automatically for easier deployment.
Reimplemented a few filters on top of the new compressor.filters.base.CompilerFilter to be a bit more DRY.
Added tox based test configuration, testing on Django 1.1-1.3 and Python 2.5-2.7.