Exemplo n.º 1
0
class ChameleonTemplatePlugin(plugins.SimplePlugin):

    def __init__(self, bus, config):
        super(ChameleonTemplatePlugin, self).__init__(bus)
        self.config = config

    def start(self):
        self.bus.log('ChameleonTemplatePlugin: Starting template engine')

        loader_config = {}
        loader_search_path = self.config.get('loader.search_path')
        loader_default_extension = self.config.get('loader.default_extension')

        for (key, value) in self.config.iteritems():
            key_without_prefix = key.rsplit('.')[-1]
            if key.startswith('chameleon.config.'):
                os.environ['CHAMELEON_%s' % key_without_prefix.upper()] = value
            elif key.startswith('loader.config.'):
                loader_config[key_without_prefix] = value

        from chameleon import PageTemplateLoader
        self.loader = PageTemplateLoader(loader_search_path,
                                         loader_default_extension,
                                         **loader_config)

        self.bus.subscribe('lookup-template', self.get_template)

    def stop(self):
        self.bus.log('ChameleonTemplatePlugin: Stopping template engine')
        self.bus.unsubscribe('lookup-template', self.get_template)

    def get_template(self, filename, format=None):
        return self.loader.load(filename, format)
Exemplo n.º 2
0
class Templates(TemplatesBase):
    def __init__(self, dir):
        self.dir = dir
        self.loader = PageTemplateLoader(dir)

    def get(self, name, extension=None):
        # default the name to "home"
        if name is None:
            name = "home"
        elif extension is None and "." in name:
            # split name
            name, extension = name.split(".")

        src, filename = find_template(self.dir, name, extension)
        return RoundupPageTemplate(self.loader.load(src))