X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/61c3753c6e0c567ccbb11115c787da22218ab5f6..b2c05060cee75fc1b6902e08c706ca369a37e1ab:/apps/compress/templatetags/compressed.py diff --git a/apps/compress/templatetags/compressed.py b/apps/compress/templatetags/compressed.py index f9c55f92..eeed319b 100644 --- a/apps/compress/templatetags/compressed.py +++ b/apps/compress/templatetags/compressed.py @@ -2,13 +2,12 @@ import os from django import template -from django.conf import settings as django_settings - from compress.conf import settings from compress.utils import media_root, media_url, needs_update, filter_css, filter_js, get_output_filename, get_version, get_version_from_file register = template.Library() + def render_common(template_name, obj, filename, version): if settings.COMPRESS: filename = get_output_filename(filename, version) @@ -19,16 +18,20 @@ def render_common(template_name, obj, filename, version): context['url'] = filename else: context['url'] = media_url(filename, prefix) - + return template.loader.render_to_string(template_name, context) + def render_css(css, filename, version=None): return render_common(css.get('template_name', 'compress/css.html'), css, filename, version) + def render_js(js, filename, version=None): return render_common(js.get('template_name', 'compress/js.html'), js, filename, version) + class CompressedCSSNode(template.Node): + def __init__(self, name): self.name = name @@ -38,14 +41,14 @@ class CompressedCSSNode(template.Node): try: css = settings.COMPRESS_CSS[css_name] except KeyError: - return '' # fail silently, do not return anything if an invalid group is specified + return '' # fail silently, do not return anything if an invalid group is specified if settings.COMPRESS: version = None if settings.COMPRESS_AUTO: - u, version = needs_update(css['output_filename'], + u, version = needs_update(css['output_filename'], css['source_filenames']) if u: filter_css(css) @@ -53,7 +56,7 @@ class CompressedCSSNode(template.Node): filename_base, filename = os.path.split(css['output_filename']) path_name = media_root(filename_base) version = get_version_from_file(path_name, filename) - + return render_css(css, css['output_filename'], version) else: # output source files @@ -63,7 +66,9 @@ class CompressedCSSNode(template.Node): return r + class CompressedJSNode(template.Node): + def __init__(self, name): self.name = name @@ -73,24 +78,24 @@ class CompressedJSNode(template.Node): try: js = settings.COMPRESS_JS[js_name] except KeyError: - return '' # fail silently, do not return anything if an invalid group is specified - + return '' # fail silently, do not return anything if an invalid group is specified + if 'external_urls' in js: r = '' for url in js['external_urls']: r += render_js(js, url) return r - + if settings.COMPRESS: version = None if settings.COMPRESS_AUTO: - u, version = needs_update(js['output_filename'], + u, version = needs_update(js['output_filename'], js['source_filenames']) if u: filter_js(js) - else: + else: filename_base, filename = os.path.split(js['output_filename']) path_name = media_root(filename_base) version = get_version_from_file(path_name, filename) @@ -103,6 +108,7 @@ class CompressedJSNode(template.Node): r += render_js(js, source_file) return r + #@register.tag def compressed_css(parser, token): try: @@ -113,6 +119,7 @@ def compressed_css(parser, token): return CompressedCSSNode(name) compressed_css = register.tag(compressed_css) + #@register.tag def compressed_js(parser, token): try: @@ -121,4 +128,5 @@ def compressed_js(parser, token): raise template.TemplateSyntaxError, '%r requires exactly one argument: the name of a group in the COMPRESS_JS setting' % token.split_contents()[0] return CompressedJSNode(name) + compressed_js = register.tag(compressed_js)