Add support for COMPRESS_CSS_HASHING_METHOD = None

This commit is contained in:
Mathieu Pillard
2014-05-25 15:32:16 +02:00
parent e25459ed60
commit 53e9c7ff1c
3 changed files with 31 additions and 12 deletions

View File

@@ -70,6 +70,8 @@ class CssAbsoluteFilter(FilterBase):
suffix = get_hashed_mtime(filename)
elif settings.COMPRESS_CSS_HASHING_METHOD in ("hash", "content"):
suffix = get_hashed_content(filename)
elif settings.COMPRESS_CSS_HASHING_METHOD is None:
suffix = None
else:
raise FilterError('COMPRESS_CSS_HASHING_METHOD is configured '
'with an unknown method (%s).' %

View File

@@ -123,6 +123,24 @@ class CssAbsolutizingTestCase(TestCase):
settings.COMPRESS_URL = self.old_url
settings.COMPRESS_CSS_HASHING_METHOD = self.old_hashing_method
def test_css_no_hash(self):
settings.COMPRESS_CSS_HASHING_METHOD = None
filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css')
params = {
'url': settings.COMPRESS_URL,
}
output = ("p { background: url('%(url)simg/python.png') }"
"p { filter: Alpha(src='%(url)simg/python.png') }") % params
filter = CssAbsoluteFilter(self.content)
self.assertEqual(output, filter.input(filename=filename, basename='css/url/test.css'))
settings.COMPRESS_URL = params['url'] = 'http://static.example.com/'
filter = CssAbsoluteFilter(self.content)
filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css')
output = ("p { background: url('%(url)simg/python.png') }"
"p { filter: Alpha(src='%(url)simg/python.png') }") % params
self.assertEqual(output, filter.input(filename=filename, basename='css/url/test.css'))
def test_css_absolute_filter(self):
filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css')
imagefilename = os.path.join(settings.COMPRESS_ROOT, 'img/python.png')
@@ -134,6 +152,7 @@ class CssAbsolutizingTestCase(TestCase):
"p { filter: Alpha(src='%(url)simg/python.png?%(hash)s') }") % params
filter = CssAbsoluteFilter(self.content)
self.assertEqual(output, filter.input(filename=filename, basename='css/url/test.css'))
settings.COMPRESS_URL = params['url'] = 'http://static.example.com/'
filter = CssAbsoluteFilter(self.content)
filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css')
@@ -153,6 +172,7 @@ class CssAbsolutizingTestCase(TestCase):
output = "p { background: url('%(url)simg/python.png?%(hash)s#foo') }" % params
filter = CssAbsoluteFilter(content)
self.assertEqual(output, filter.input(filename=filename, basename='css/url/test.css'))
settings.COMPRESS_URL = params['url'] = 'http://media.example.com/'
filter = CssAbsoluteFilter(content)
filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css')
@@ -164,6 +184,7 @@ class CssAbsolutizingTestCase(TestCase):
content = "p { background: url('#foo') }"
filter = CssAbsoluteFilter(content)
self.assertEqual(content, filter.input(filename=filename, basename='css/url/test.css'))
settings.COMPRESS_URL = 'http://media.example.com/'
filter = CssAbsoluteFilter(content)
filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css')
@@ -181,6 +202,7 @@ class CssAbsolutizingTestCase(TestCase):
output = "p { background: url('%(url)simg/python.png?foo&%(hash)s') }" % params
filter = CssAbsoluteFilter(content)
self.assertEqual(output, filter.input(filename=filename, basename='css/url/test.css'))
settings.COMPRESS_URL = params['url'] = 'http://media.example.com/'
filter = CssAbsoluteFilter(content)
filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css')
@@ -198,6 +220,7 @@ class CssAbsolutizingTestCase(TestCase):
"p { filter: Alpha(src='%(url)simg/python.png?%(hash)s') }") % params
filter = CssAbsoluteFilter(self.content)
self.assertEqual(output, filter.input(filename=filename, basename='css/url/test.css'))
settings.COMPRESS_URL = params['url'] = 'https://static.example.com/'
filter = CssAbsoluteFilter(self.content)
filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css')
@@ -216,6 +239,7 @@ class CssAbsolutizingTestCase(TestCase):
"p { filter: Alpha(src='%(url)simg/python.png?%(hash)s') }") % params
filter = CssAbsoluteFilter(self.content)
self.assertEqual(output, filter.input(filename=filename, basename='css/url/test.css'))
settings.COMPRESS_URL = params['url'] = 'https://static.example.com/'
filter = CssAbsoluteFilter(self.content)
output = ("p { background: url('%(url)simg/python.png?%(hash)s') }"
@@ -256,14 +280,6 @@ class CssAbsolutizingTestCaseWithHash(CssAbsolutizingTestCase):
hashing_method = 'content'
hashing_func = staticmethod(get_hashed_content)
def setUp(self):
super(CssAbsolutizingTestCaseWithHash, self).setUp()
self.css = """
<link rel="stylesheet" href="/static/css/url/url1.css" type="text/css" charset="utf-8">
<link rel="stylesheet" href="/static/css/url/2/url2.css" type="text/css" charset="utf-8">
"""
self.css_node = CssCompressor(self.css)
class CssDataUriTestCase(TestCase):
def setUp(self):

View File

@@ -81,10 +81,11 @@ Backend settings
.. attribute:: COMPRESS_CSS_HASHING_METHOD
The method to use when calculating the hash to append to
processed URLs. Either ``'mtime'`` (default) or ``'content'``.
Use the latter in case you're using multiple server to serve your
static files.
The method to use when calculating the suffix to append to URLs in
your processed CSS files. Either ``None``, ``'mtime'`` (default) or
``'content'``. Use the ``None`` if you want to completely disable that
feature, and the ``'content'`` in case you're using multiple servers
to serve your content.
- ``compressor.filters.csstidy.CSSTidyFilter``