view roundup/cgi/engine_chameleon.py @ 5179:e8b3d3a14563

- issue2550796: Calendar and Classhelp selection tools don't cause onchange event to be triggered. Using the helper popups for modifying lists of users, lists of issues, dates etc.. now trigger the change event on the form's field. This allows onchange javascript to trigger to highlight changes, recalculate other form values etc. See ``upgrading.txt`` for details on applying these changes to your tracker.
author John Rouillard <rouilj@ieee.org>
date Sat, 28 Jan 2017 20:58:19 -0500
parents 0421390b3094
children 56c9bcdea47f
line wrap: on
line source

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

__docformat__ = 'restructuredtext'

import os.path
import chameleon

from roundup.cgi.templating import StringIO, context, TALLoaderBase

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 unicode(result, client.translator.OUTPUT_ENCODING)

        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/