__init__.py 2.3 KB
Newer Older
1 2 3
from mitxmako.shortcuts import render_to_string

from pipeline.conf import settings
4
from pipeline.packager import Packager
5
from pipeline.utils import guess_type
6
from static_replace import try_staticfiles_lookup
7

8

9 10 11 12 13 14
def compressed_css(package_name):
    package = settings.PIPELINE_CSS.get(package_name, {})
    if package:
        package = {package_name: package}
    packager = Packager(css_packages=package, js_packages={})

15
    package = packager.package_for('css', package_name)
16 17 18 19 20 21 22

    if settings.PIPELINE:
        return render_css(package, package.output_filename)
    else:
        paths = packager.compile(package.paths)
        return render_individual_css(package, paths)

23

24
def render_css(package, path):
25
    template_name = package.template_name or "mako/css.html"
26
    context = package.extra_context
27 28

    url = try_staticfiles_lookup(path)
29 30
    context.update({
        'type': guess_type(path, 'text/css'),
31
        'url': url,
32 33 34
    })
    return render_to_string(template_name, context)

35

36 37 38 39 40 41 42 43 44 45 46
def render_individual_css(package, paths):
    tags = [render_css(package, path) for path in paths]
    return '\n'.join(tags)


def compressed_js(package_name):
    package = settings.PIPELINE_JS.get(package_name, {})
    if package:
        package = {package_name: package}
    packager = Packager(css_packages={}, js_packages=package)

47
    package = packager.package_for('js', package_name)
48 49 50 51 52 53 54 55

    if settings.PIPELINE:
        return render_js(package, package.output_filename)
    else:
        paths = packager.compile(package.paths)
        templates = packager.pack_templates(package)
        return render_individual_js(package, paths, templates)

56

57
def render_js(package, path):
58
    template_name = package.template_name or "mako/js.html"
59 60 61
    context = package.extra_context
    context.update({
        'type': guess_type(path, 'text/javascript'),
62
        'url': try_staticfiles_lookup(path)
63 64 65
    })
    return render_to_string(template_name, context)

66

67 68 69 70 71
def render_inline_js(package, js):
    context = package.extra_context
    context.update({
        'source': js
    })
72
    return render_to_string("mako/inline_js.html", context)
73

74

75 76 77 78 79
def render_individual_js(package, paths, templates=None):
    tags = [render_js(package, js) for js in paths]
    if templates:
        tags.append(render_inline_js(package, templates))
    return '\n'.join(tags)