class CompressedCSSNode(template.Node): def __init__(self, name): self.name = name self.packager = Packager() def render(self, context): package_name = template.Variable(self.name).resolve(context) try: package = self.packager.package_for('css', package_name) except PackageNotFound: return '' # fail silently, do not return anything if an invalid group is specified if settings.COMPRESS: compressed_path = self.packager.pack_stylesheets(package) return self.render_css(package, compressed_path) else: package['paths'] = self.packager.compile(package['paths']) return self.render_individual(package) def render_css(self, package, path): context = {} if not 'template' in package: package['template'] = "compress/css.html" if not 'context' in package: context = package['context'] context.update({ 'url': self.packager.individual_url(path) }) return render_to_string(package['template'], context) def render_individual(self, package): tags = [self.render_css(package, path) for path in package['paths']] return '\n'.join(tags)
class CompressedNode(template.Node): def __init__(self, name, aType): self.name = name self.type = aType if aType == 'css': self.template = "compress/css.html" else: self.template = "compress/js.html" self.packager = Packager() def create_tags(self, package, path): context = {} if 'context' in package: context = package['context'] context.update({'url': self.packager.individual_url(path)}) return render_to_string(package['template'], context) def render(self, context): package_name = template.Variable(self.name).resolve(context) try: package = self.packager.package_for(self.type, package_name) package['type'] = self.type except PackageNotFound: # fail silently, do not return anything if an invalid group return '' if not 'template' in package: package['template'] = self.template if 'externals' in package: out = '\n'.join([self.render_external(package, url) \ for url in package['externals']]) else: out = '' individual = True compressed_path = None if settings.COMPRESS: compressed_path = self.packager.pack(package) # If something wrong with compressing (can't create files) - # fallback to individual if compressed_path: out += self.create_tags(package, compressed_path) individual = False if individual: package['paths'] = self.packager.compile(package['paths']) out += self.render_individual(package) return out def render_external(self, package, url): return render_to_string(package['template'], {'url': url}) def render_individual(self, package): tags = [self.create_tags(package, path) \ for path in package['paths']] return '\n'.join(tags)
class CompressedJSNode(template.Node): def __init__(self, name): self.name = name self.packager = Packager() def render(self, context): package_name = template.Variable(self.name).resolve(context) try: package = self.packager.package_for('js', package_name) except PackageNotFound: return '' # fail silently, do not return anything if an invalid group is specified if 'externals' in package: return '\n'.join([self.render_external(package, url) for url in package['externals']]) if settings.COMPRESS: compressed_path = self.packager.pack_javascripts(package) return self.render_js(package, compressed_path) else: package['paths'] = self.packager.compile(package['paths']) templates = self.packager.pack_templates(package) return self.render_individual(package, templates) def render_js(self, package, path): context = {} if not 'template' in package: package['template'] = "compress/js.html" if not 'context' in package: context = package['context'] context.update({ 'url': self.packager.individual_url(path) }) return render_to_string(package['template'], context) def render_external(self, package, url): if not 'template' in package: package['template'] = "compress/js.html" return render_to_string(package['template'], { 'url': url }) def render_inline(self, package, js): context = {} if not 'context' in package: context = package['context'] context.update({ 'source': js }) return render_to_string("compress/inline_js.html", context) def render_individual(self, package, templates=None): tags = [self.render_js(package, js) for js in package['paths']] if templates: tags.append(self.render_inline(package, templates)) return '\n'.join(tags)
class CompressedNode(template.Node): def __init__(self, name, aType): self.name = name self.type = aType if aType == 'css': self.template = "compress/css.html" else: self.template = "compress/js.html" self.packager = Packager() def create_tags(self, package, path): context = {} if 'context' in package: context = package['context'] context.update({ 'url': self.packager.individual_url(path) }) return render_to_string(package['template'], context) def render(self, context): package_name = template.Variable(self.name).resolve(context) try: package = self.packager.package_for(self.type, package_name) package['type'] = self.type except PackageNotFound: # fail silently, do not return anything if an invalid group return '' if not 'template' in package: package['template'] = self.template if 'externals' in package: out = '\n'.join([self.render_external(package, url) \ for url in package['externals']]) else: out = '' individual = True compressed_path = None if settings.COMPRESS: compressed_path = self.packager.pack(package) # If something wrong with compressing (can't create files) - # fallback to individual if compressed_path: out += self.create_tags(package, compressed_path) individual = False if individual: package['paths'] = self.packager.compile(package['paths']) out += self.render_individual(package) return out def render_external(self, package, url): return render_to_string(package['template'], { 'url': url }) def render_individual(self, package): tags = [self.create_tags(package, path) \ for path in package['paths']] return '\n'.join(tags)