view roundup/cgi/engine_chameleon.py @ 6330:fbce23af2120

Test case for backend not defined; remove unreachable code Verify that error is raised in configuration.py if backend is not defined in config.ini. Remove unreachable code from instance.py that detects that backend is not defined. It hasn't been reachable since version 1.6.1 because the configuration.py module made the backend option mandatory. Hence configuration.py raises the error and never passes control back to the unreachable code.
author John Rouillard <rouilj@ieee.org>
date Tue, 02 Mar 2021 00:08:51 -0500
parents 4d20d8251bf2
children b8e63e65d9a8
line wrap: on
line source

"""Templating engine adapter for the Chameleon."""

__docformat__ = 'restructuredtext'

import chameleon

from roundup.cgi.templating import context, TALLoaderBase
from roundup.anypy.strings import s2u


class Loader(TALLoaderBase):
    def __init__(self, dir):
        self.dir = dir
        self.loader = chameleon.PageTemplateLoader(dir)

    def load(self, tplname):
        src, filename = self._find(tplname)
        return RoundupPageTemplate(self.loader.load(src))


class RoundupPageTemplate(object):
    def __init__(self, pt):
        self._pt = pt

    def render(self, client, classname, request, **options):
        c = context(client, self, classname, request)
        c.update({'options': options})

        def translate(msgid, domain=None, mapping=None, default=None):
            result = client.translator.translate(domain, msgid,
                                                 mapping=mapping,
                                                 default=default)
            return s2u(result)

        output = self._pt.render(None, translate, **c)
        return output.encode(client.charset)

    def __getitem__(self, name):
        return self._pt[name]

    def __getattr__(self, name):
        return getattr(self._pt, name)

Roundup Issue Tracker: http://roundup-tracker.org/