def test_individual_url(self): """Check that individual URL is correctly generated""" packager = Packager() filename = os.path.join(settings.COMPRESS_ROOT, u'js/application.js') individual_url = packager.individual_url(filename) self.assertEqual(individual_url, settings.COMPRESS_URL + "js/application.js")
def handle_noargs(self, **options): from compress.packager import Packager packager = Packager(force=options.get('force', False), verbose=int(options.get('verbosity', 1)) >= 2) for package_name in packager.packages['css']: package = packager.package_for('css', package_name) if packager.verbose or packager.force: print message = "CSS Group '%s'" % package_name print message print len(message) * '-' packager.pack(package) packager = Packager(force=options.get('force', False), verbose=int(options.get('verbosity', 1)) >= 2) for package_name in packager.packages['js']: package = packager.package_for('js', package_name) if packager.verbose or packager.force: print message = "JS Group '%s'" % package_name print message print len(message) * '-' packager.pack(package)
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)
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()
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)
def handle_noargs(self, **options): from compress.packager import Packager packager = Packager( force=options.get('force', False), verbose=int(options.get('verbosity', 1)) >= 2 ) for package_name in packager.packages['css']: package = packager.package_for('css', package_name) if packager.verbose or packager.force: print message = "CSS Group '%s'" % package_name print message print len(message) * '-' packager.pack(package) packager = Packager( force=options.get('force', False), verbose=int(options.get('verbosity', 1)) >= 2 ) for package_name in packager.packages['js']: package = packager.package_for('js', package_name) if packager.verbose or packager.force: print message = "JS Group '%s'" % package_name print message print len(message) * '-' packager.pack(package)
def test_create_package(self): packager = Packager() self.assertEqual(packager.create_packages({}), {}) with self.assertRaises(PackageNotFound): packager.package_for('css', 'test_package') old_root = settings.COMPRESS_ROOT settings.COMPRESS_ROOT = os.path.join(os.path.dirname(__file__), "testdata/") packages = {'data': {'jquery': {'external_urls': ('http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js',) } , 'main': { 'source_filenames': ( 'js/application.js' , 'js/application1.js' , ) , 'output_filename': 'application.r?.js' } , 'mixed': { 'external_urls': ('http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js',) , 'source_filenames': ('js/application.js' , 'js/application1.js' , ) , 'output_filename': 'application.r?.js' } , 'test': { 'source_filenames': ( 'css/abs*.css' , ) , 'output_filename': 'application.r?.css' , 'template_name': 'test/template.html' , 'extra_context': { 'a': 'a', } } } , 'expected': { 'jquery': { 'context': {} , 'externals': ('http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js',) , 'output': '' , 'paths': [] } , 'main': { 'context': {} , 'output': 'application.r?.js' , 'paths': ['js/application1.js'] } , 'mixed': { 'context': {} , 'externals': ('http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js',) , 'output': 'application.r?.js' , 'paths': ['js/application1.js'] } , 'test': { 'context': { 'a': 'a' } , 'paths': [ 'css/absolute.css' ] , 'output': 'application.r?.css' , 'template': 'test/template.html' } } } out = packager.create_packages( packages['data'] ) self.assertEqual(out, packages['expected'] ) settings.COMPRESS_ROOT = old_root
def test_external_urls(self): packager = Packager() packages = packager.create_packages({ 'jquery': { 'external_urls': ('//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js',) }, 'application': { 'source_filenames': ('js/application.js',), 'output_filename': 'application.r?.js' } }) self.assertEqual(packages, { 'jquery': { 'externals': ('//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js',) }, 'application': { 'context': {}, 'output': 'application.r?.js', 'paths': ['js/application.js'] } })
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)
def test_create_package(self): packager = Packager() self.assertEqual(packager.create_packages({}), {}) with self.assertRaises(PackageNotFound): packager.package_for('css', 'test_package') old_root = settings.COMPRESS_ROOT settings.COMPRESS_ROOT = os.path.join(os.path.dirname(__file__), "testdata/") packages = { 'data': { 'jquery': { 'external_urls': ('http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js', ) }, 'main': { 'source_filenames': ( 'js/application.js', 'js/application1.js', ), 'output_filename': 'application.r?.js' }, 'mixed': { 'external_urls': ('http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js', ), 'source_filenames': ( 'js/application.js', 'js/application1.js', ), 'output_filename': 'application.r?.js' }, 'test': { 'source_filenames': ('css/abs*.css', ), 'output_filename': 'application.r?.css', 'template_name': 'test/template.html', 'extra_context': { 'a': 'a', } } }, 'expected': { 'jquery': { 'context': {}, 'externals': ('http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js', ), 'output': '', 'paths': [] }, 'main': { 'context': {}, 'output': 'application.r?.js', 'paths': ['js/application1.js'] }, 'mixed': { 'context': {}, 'externals': ('http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js', ), 'output': 'application.r?.js', 'paths': ['js/application1.js'] }, 'test': { 'context': { 'a': 'a' }, 'paths': ['css/absolute.css'], 'output': 'application.r?.css', 'template': 'test/template.html' } } } out = packager.create_packages(packages['data']) self.assertEqual(out, packages['expected']) settings.COMPRESS_ROOT = old_root
def __init__(self, name): self.name = name self.packager = Packager()