def render_template(): globs = extra_vars or {} globs.update(pylons_globals()) # Using pylons.url() directly destroys the localisation stuff so # we remove it so any bad templates crash and burn del globs['url'] try: template_path, template_type = render_.template_info(template_name) except render_.TemplateNotFound: raise log.debug('rendering %s [%s]' % (template_path, template_type)) if config.get('debug'): context_vars = globs.get('c') if context_vars: context_vars = dir(context_vars) debug_info = {'template_name': template_name, 'template_path': template_path, 'template_type': template_type, 'vars': globs, 'c_vars': context_vars, 'renderer': renderer} if 'CKAN_DEBUG_INFO' not in request.environ: request.environ['CKAN_DEBUG_INFO'] = [] request.environ['CKAN_DEBUG_INFO'].append(debug_info) del globs['config'] return render_jinja2(template_name, globs)
def render_template(): globs = extra_vars or {} globs.update(pylons_globals()) # Using pylons.url() directly destroys the localisation stuff so # we remove it so any bad templates crash and burn del globs['url'] try: template_path, template_type = render_.template_info(template_name) except render_.TemplateNotFound: raise log.debug('rendering %s [%s]' % (template_path, template_type)) if config.get('debug'): context_vars = globs.get('c') if context_vars: context_vars = dir(context_vars) debug_info = { 'template_name': template_name, 'template_path': template_path, 'template_type': template_type, 'vars': globs, 'c_vars': context_vars, 'renderer': renderer } if 'CKAN_DEBUG_INFO' not in request.environ: request.environ['CKAN_DEBUG_INFO'] = [] request.environ['CKAN_DEBUG_INFO'].append(debug_info) del globs['config'] return render_jinja2(template_name, globs)
def render_template(): globs = extra_vars or {} globs.update(pylons_globals()) globs['actions'] = model.Action # Using pylons.url() directly destroys the localisation stuff so # we remove it so any bad templates crash and burn del globs['url'] try: template_path, template_type = render_.template_info(template_name) except render_.TemplateNotFound: template_type = 'genshi' template_path = '' # snippets should not pass the context # but allow for legacy genshi templates if renderer == 'snippet' and template_type != 'genshi': del globs['c'] del globs['tmpl_context'] log.debug('rendering %s [%s]' % (template_path, template_type)) if config.get('debug'): context_vars = globs.get('c') if context_vars: context_vars = dir(context_vars) debug_info = { 'template_name': template_name, 'template_path': template_path, 'template_type': template_type, 'vars': globs, 'c_vars': context_vars, 'renderer': renderer } if 'CKAN_DEBUG_INFO' not in request.environ: request.environ['CKAN_DEBUG_INFO'] = [] request.environ['CKAN_DEBUG_INFO'].append(debug_info) # Jinja2 templates if template_type == 'jinja2': # We don't want to have the config in templates it should be # accessed via g (app_globals) as this gives us flexability such # as changing via database settings. del globs['config'] # TODO should we raise error if genshi filters?? return render_jinja2(template_name, globs) # Genshi templates template = globs['app_globals'].genshi_loader.load( template_name.encode('utf-8'), cls=loader_class) stream = template.generate(**globs) for item in p.PluginImplementations(p.IGenshiStreamFilter): stream = item.filter(stream) if loader_class == NewTextTemplate: return literal(stream.render(method="text", encoding=None)) return literal( stream.render(method=method, encoding=None, strip_whitespace=True))
def render_template(): globs = extra_vars or {} globs.update(pylons_globals()) # Using pylons.url() directly destroys the localisation stuff so # we remove it so any bad templates crash and burn del globs["url"] try: template_path, template_type = render_.template_info(template_name) except render_.TemplateNotFound: raise log.debug("rendering %s [%s]" % (template_path, template_type)) if config.get("debug"): context_vars = globs.get("c") if context_vars: context_vars = dir(context_vars) debug_info = { "template_name": template_name, "template_path": template_path, "template_type": template_type, "vars": globs, "c_vars": context_vars, "renderer": renderer, } if "CKAN_DEBUG_INFO" not in request.environ: request.environ["CKAN_DEBUG_INFO"] = [] request.environ["CKAN_DEBUG_INFO"].append(debug_info) del globs["config"] return render_jinja2(template_name, globs)
def render_template(): globs = extra_vars or {} globs.update(pylons_globals()) globs['actions'] = model.Action # Using pylons.url() directly destroys the localisation stuff so # we remove it so any bad templates crash and burn del globs['url'] try: template_path, template_type = render_.template_info(template_name) except render_.TemplateNotFound: template_type = 'genshi' template_path = '' # snippets should not pass the context # but allow for legacy genshi templates if renderer == 'snippet' and template_type != 'genshi': del globs['c'] del globs['tmpl_context'] log.debug('rendering %s [%s]' % (template_path, template_type)) if config.get('debug'): context_vars = globs.get('c') if context_vars: context_vars = dir(context_vars) debug_info = {'template_name': template_name, 'template_path': template_path, 'template_type': template_type, 'vars': globs, 'c_vars': context_vars, 'renderer': renderer} if 'CKAN_DEBUG_INFO' not in request.environ: request.environ['CKAN_DEBUG_INFO'] = [] request.environ['CKAN_DEBUG_INFO'].append(debug_info) # Jinja2 templates if template_type == 'jinja2': # We don't want to have the config in templates it should be # accessed via g (app_globals) as this gives us flexability such # as changing via database settings. del globs['config'] # TODO should we raise error if genshi filters?? return render_jinja2(template_name, globs) # Genshi templates template = globs['app_globals'].genshi_loader.load( template_name.encode('utf-8'), cls=loader_class ) stream = template.generate(**globs) for item in p.PluginImplementations(p.IGenshiStreamFilter): stream = item.filter(stream) if loader_class == NewTextTemplate: return literal(stream.render(method="text", encoding=None)) return literal(stream.render(method=method, encoding=None, strip_whitespace=True))