def render_template(self, jinja_template, page_title, **context): from ferenda import DocumentRepository repo = DocumentRepository(config=self.repo.config) jinja_template = """ <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>%(page_title)s</title></head> <body> <div> %(jinja_template)s </div> </body> </html> """ % (locals()) t = Template(jinja_template, autoescape=True) text = t.render(context).encode("utf-8") try: xhtml = etree.parse(BytesIO(text)) except XMLSyntaxError as e: raise ValueError("invalid xhtml from template: %s\n%s" % (e, text.decode("utf-8"))) conffile = os.sep.join([repo.config.datadir, 'rsrc', 'resources.xml']) transformer = Transformer('XSLT', "xsl/generic.xsl", "xsl", resourceloader=repo.resourceloader, config=conffile) urltransform = None if 'develurl' in repo.config and repo.config.develurl: urltransform = repo.get_url_transform_func( develurl=repo.config.develurl) depth = 2 # len(doc.uri.split("/")) - 3 tree = transformer.transform(xhtml, depth, uritransform=urltransform) data = etree.tostring(tree, encoding="utf-8") return Response(data, mimetype="text/html")
def _transform(self, title, body, environ, template="xsl/error.xsl"): fakerepo = self.repos[0] doc = fakerepo.make_document() doc.uri = request_uri(environ) doc.meta.add((URIRef(doc.uri), DCTERMS.title, Literal(title, lang="sv"))) doc.body = body xhtml = fakerepo.render_xhtml_tree(doc) conffile = os.sep.join([self.config.datadir, 'rsrc', 'resources.xml']) transformer = Transformer('XSLT', template, "xsl", resourceloader=fakerepo.resourceloader, config=conffile) urltransform = None if 'develurl' in self.config: urltransform = fakerepo.get_url_transform_func( repos=self.repos, develurl=self.config.develurl, wsgiapp=self) depth = len(doc.uri.split("/")) - 3 tree = transformer.transform(xhtml, depth, uritransform=urltransform) return etree.tostring(tree, encoding="utf-8")
def _transform(self, title, body, environ, template="xsl/error.xsl"): fakerepo = self.repos[0] doc = fakerepo.make_document() doc.uri = request_uri(environ) doc.meta.add((URIRef(doc.uri), DCTERMS.title, Literal(title, lang="sv"))) doc.body = body xhtml = fakerepo.render_xhtml_tree(doc) conffile = os.sep.join([self.config.documentroot, 'rsrc', 'resources.xml']) transformer = Transformer('XSLT', template, "xsl", resourceloader=fakerepo.resourceloader, config=conffile) urltransform = None if 'develurl' in self.config: urltransform = fakerepo.get_url_transform_func( develurl=self.config.develurl) depth = len(doc.uri.split("/")) - 3 tree = transformer.transform(xhtml, depth, uritransform=urltransform) return etree.tostring(tree, encoding="utf-8")