Beispiel #1
0
    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")
Beispiel #2
0
 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")
Beispiel #3
0
 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")