Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django Compressor does not minify files

I am trying to let django-compressor working with mezzanine. For first attempt I simply installed django compressor (as should be done for Mezzanine) and changed DEBUG = False but nothing changed in HTML generated from Django. So I followed the docs of django compressor and I modified my settings.py:

STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.FileSystemFinder",
#"django.contrib.staticfiles.finders.AppDirectoriesFinder",
#'django.contrib.staticfiles.finders.DefaultStorageFinder',
"compressor.finders.CompressorFinder",
)

INSTALLED_APPS = (
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.redirects",
    "django.contrib.sessions",
    "django.contrib.sites",
    "django.contrib.sitemaps",
    "django.contrib.staticfiles",
    "mezzanine.boot",
    "mezzanine.conf",
    "mezzanine.core",
    "mezzanine.generic",
    "mezzanine.blog",
    "mezzanine.forms",
    "mezzanine.pages",
    "mezzanine.galleries",
    "mezzanine.twitter",
    #"mezzanine.accounts",
    #"mezzanine.mobile",
    #'debug_toolbar',
    "compressor",
)

OPTIONAL_APPS = (
    #"debug_toolbar",
    "django_extensions",
    #"compressor", I commented it to follow the django-compressor doc
    PACKAGE_NAME_FILEBROWSER,
    PACKAGE_NAME_GRAPPELLI,
)

COMPRESS_ENABLED = True
COMPRESS_ROOT = STATIC_ROOT

These are the packages installed in my environment:

Django==1.6.5
Mezzanine==3.1.5
Pillow==2.5.1
bleach==1.4
distribute==0.6.24
django-appconf==0.6
django-compressor==1.4
filebrowser-safe==0.3.5
future==0.9.0
grappelli-safe==0.3.12
html5lib==1.0b3
oauthlib==0.6.3
pytz==2014.4
requests==2.3.0
requests-oauthlib==0.4.1
six==1.7.3
tzlocal==1.0

Here, how I used compressor in templates:

{% load pages_tags mezzanine_tags i18n future staticfiles compress %}
{% compress css %}
<link rel="stylesheet" href="{% static "css/custom/mycss.css" %}">
{% endcompress %}

and nothing happened until I launched:

python manage.py compress --force

So now I have the cache populated and the HTML generated from Django points to the files in CACHE like:

<link rel="stylesheet" href="/static/CACHE/css/16e8b98f5bd3.css" type="text/css" media="screen">

but the files are not minified, django compressor simply copied them and changed the name. Do you know why the compressor not minify them?

like image 975
Appost Avatar asked Jul 16 '14 11:07

Appost


2 Answers

Django compressor will not run on the django server even with DEBUG = False. It also by default only will merge all your css files into one. To do other things like minify you can apply a filter. Here is what I did in my settings.py

COMPRESS_ENABLED = True
COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter',  'compressor.filters.cssmin.CSSMinFilter']

I think this will be helpful for others. Cheers!

like image 64
radtek Avatar answered Nov 11 '22 23:11

radtek


The problem was the memchached, disabling it, Django showed problems of permissions and to minify the css I had to select a filter like compressor.filters.cssmin.CSSMinFilter

like image 2
Appost Avatar answered Nov 12 '22 00:11

Appost