Code cleanups for the new Jinja2 contrib extension.

This commit is contained in:
Jannis Leidel
2011-09-21 12:16:24 +02:00
parent a203d6bb2f
commit db122ce116
4 changed files with 40 additions and 42 deletions

View File

@@ -1,7 +1,9 @@
from django.core.exceptions import ImproperlyConfigured
from jinja2 import nodes
from jinja2.ext import Extension
from jinja2.exceptions import TemplateSyntaxError
from django.core.exceptions import ImproperlyConfigured
from compressor.conf import settings
from compressor.utils import get_class
from compressor.templatetags.compress import OUTPUT_FILE
@@ -28,8 +30,9 @@ class CompressorExtension(Extension):
kindarg = nodes.Const(kindarg.name)
args = [kindarg]
if args[0].value not in self.compressors:
raise TemplateSyntaxError('compress kind may be one of: %s'
% (', '.join(self.compressors.keys())), lineno)
raise TemplateSyntaxError('compress kind may be one of: %s' %
(', '.join(self.compressors.keys())),
lineno)
if parser.stream.skip_if('comma'):
modearg = parser.parse_expression()
# Allow mode to be defined as jinja2 name node
@@ -76,10 +79,7 @@ class CompressorExtension(Extension):
and return a tuple of cache key and output
"""
if settings.COMPRESS_ENABLED and not forced:
cache_key = get_templatetag_cachekey(
compressor, mode, kind)
cache_key = get_templatetag_cachekey(compressor, mode, kind)
cache_content = cache_get(cache_key)
return cache_key, cache_content
return None, None

View File

@@ -3,7 +3,6 @@ Jinja2 Support
Django Compressor comes with support for Jinja2_ via an extension.
Plain Jinja2
------------

View File

@@ -1,15 +1,14 @@
from __future__ import with_statement
from django.test import TestCase
import jinja2
from compressor.conf import settings
from unittest2 import skipIf
from .base import css_tag
try:
import jinja2
except ImportError:
jinja2 = None
class TestJinja2CompressorExtension(TestCase):
"""
Test case for jinja2 extension.
@@ -29,18 +28,16 @@ class TestJinja2CompressorExtension(TestCase):
self.env = jinja2.Environment(extensions=[CompressorExtension])
def test_error_raised_if_no_arguments_given(self):
with self.assertRaises(jinja2.exceptions.TemplateSyntaxError):
self.env.from_string('{% compress %}Foobar{% endcompress %}')
self.assertRaises(jinja2.exceptions.TemplateSyntaxError,
self.env.from_string, '{% compress %}Foobar{% endcompress %}')
def test_error_raised_if_wrong_kind_given(self):
with self.assertRaises(jinja2.exceptions.TemplateSyntaxError):
self.env.from_string('{% compress foo %}Foobar{% endcompress %}'
).render()
self.assertRaises(jinja2.exceptions.TemplateSyntaxError,
self.env.from_string, '{% compress foo %}Foobar{% endcompress %}')
def test_error_raised_if_wrong_mode_given(self):
with self.assertRaises(jinja2.exceptions.TemplateSyntaxError):
self.env.from_string('{% compress css foo %}Foobar{% endcompress %}'
).render()
self.assertRaises(jinja2.exceptions.TemplateSyntaxError,
self.env.from_string, '{% compress css foo %}Foobar{% endcompress %}')
def test_compress_is_disabled(self):
org_COMPRESS_ENABLED = settings.COMPRESS_ENABLED
@@ -58,7 +55,7 @@ class TestJinja2CompressorExtension(TestCase):
def test_empty_tag(self):
template = self.env.from_string(u"""{% compress js %}{% block js %}
{% endblock %}{% endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL }
context = {'MEDIA_URL': settings.COMPRESS_URL}
self.assertEqual(u'', template.render(context))
def test_css_tag(self):
@@ -66,8 +63,8 @@ class TestJinja2CompressorExtension(TestCase):
<link rel="stylesheet" href="{{ MEDIA_URL }}css/one.css" type="text/css" charset="utf-8">
<style type="text/css">p { border:5px solid green;}</style>
<link rel="stylesheet" href="{{ MEDIA_URL }}css/two.css" type="text/css" charset="utf-8">
{%- endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL }
{% endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL}
out = css_tag("/media/CACHE/css/e41ba2cc6982.css")
self.assertEqual(out, template.render(context))
@@ -75,8 +72,8 @@ class TestJinja2CompressorExtension(TestCase):
template = self.env.from_string(u"""{% compress css -%}
<link rel="stylesheet" href="{{ MEDIA_URL }}css/nonasc.css" type="text/css" charset="utf-8">
<style type="text/css">p { border:5px solid green;}</style>
{%- endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL }
{% endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL}
out = css_tag("/media/CACHE/css/799f6defe43c.css")
self.assertEqual(out, template.render(context))
@@ -84,8 +81,8 @@ class TestJinja2CompressorExtension(TestCase):
template = self.env.from_string(u"""{% compress js -%}
<script src="{{ MEDIA_URL }}js/one.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">obj.value = "value";</script>
{%- endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL }
{% endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL}
out = u'<script type="text/javascript" src="/media/CACHE/js/066cd253eada.js"></script>'
self.assertEqual(out, template.render(context))
@@ -93,8 +90,8 @@ class TestJinja2CompressorExtension(TestCase):
template = self.env.from_string(u"""{% compress js -%}
<script src="{{ MEDIA_URL }}js/nonasc.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">var test_value = "\u2014";</script>
{%- endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL }
{% endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL}
out = u'<script type="text/javascript" src="/media/CACHE/js/e214fe629b28.js"></script>'
self.assertEqual(out, template.render(context))
@@ -102,8 +99,8 @@ class TestJinja2CompressorExtension(TestCase):
template = self.env.from_string(u"""{% compress js -%}
<script src="{{ MEDIA_URL }}js/nonasc-latin1.js" type="text/javascript" charset="latin-1"></script>
<script type="text/javascript">var test_value = "\u2014";</script>
{%- endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL }
{% endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL}
out = u'<script type="text/javascript" src="/media/CACHE/js/be9e078b5ca7.js"></script>'
self.assertEqual(out, template.render(context))
@@ -111,8 +108,8 @@ class TestJinja2CompressorExtension(TestCase):
template = self.env.from_string(u"""{% compress css, inline -%}
<link rel="stylesheet" href="{{ MEDIA_URL }}css/one.css" type="text/css" charset="utf-8">
<style type="text/css">p { border:5px solid green;}</style>
{%- endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL }
{% endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL}
out = '\n'.join([
'<style type="text/css">body { background:#990; }',
'p { border:5px solid green;}</style>',
@@ -123,11 +120,7 @@ class TestJinja2CompressorExtension(TestCase):
template = self.env.from_string(u"""{% compress js, inline -%}
<script src="{{ MEDIA_URL }}js/one.js" type="text/css" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">obj.value = "value";</script>
{%- endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL }
{% endcompress %}""")
context = {'MEDIA_URL': settings.COMPRESS_URL}
out = '<script type="text/javascript">obj={};obj.value="value";</script>'
self.assertEqual(out, template.render(context))
TestJinja2CompressorExtension = skipIf(jinja2 is None, 'jinja2 not found')(
TestJinja2CompressorExtension)

View File

@@ -30,6 +30,7 @@ deps =
html5lib
coverage
mock
jinja2
django==1.2.5
[testenv:py26-1.2.X]
@@ -40,6 +41,7 @@ deps =
html5lib
coverage
mock
jinja2
django==1.2.5
[testenv:py27-1.2.X]
@@ -50,6 +52,7 @@ deps =
html5lib
coverage
mock
jinja2
django==1.2.5
@@ -61,6 +64,7 @@ deps =
html5lib
coverage
mock
jinja2
django==1.3
[testenv:py26-1.3.X]
@@ -71,6 +75,7 @@ deps =
html5lib
coverage
mock
jinja2
django==1.3
[testenv:py27-1.3.X]
@@ -81,4 +86,5 @@ deps =
html5lib
coverage
mock
jinja2
django==1.3