From 4cc4989ee2227e7527c639186dac3f0f0b2710fd Mon Sep 17 00:00:00 2001 From: Gordon Messmer Date: Thu, 11 Sep 2014 14:02:09 -0700 Subject: Update CfgJinja2Generator.py to more closely match git master code. The first version matched Bcfg2-1.3.4. --- .../Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py | 30 ++++++++++++++++------ 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'src/lib/Bcfg2/Server/Plugins') diff --git a/src/lib/Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py b/src/lib/Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py index aaf9f4fc0..e36ee78aa 100644 --- a/src/lib/Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py +++ b/src/lib/Bcfg2/Server/Plugins/Cfg/CfgJinja2Generator.py @@ -2,8 +2,10 @@ `_ templating system to generate :ref:`server-plugins-generators-cfg` files. """ -from Bcfg2.Server.Plugin import PluginExecutionError -from Bcfg2.Server.Plugins.Cfg import CfgGenerator, SETUP +import Bcfg2.Options +from Bcfg2.Server.Plugin import PluginExecutionError, \ + DefaultTemplateDataProvider, get_template_data +from Bcfg2.Server.Plugins.Cfg import CfgGenerator try: from jinja2 import Template @@ -12,6 +14,18 @@ except ImportError: HAS_JINJA2 = False +class DefaultJinja2DataProvider(DefaultTemplateDataProvider): + """ Template data provider for Jinja2 templates. Jinja2 and + Genshi currently differ over the value of the ``path`` variable, + which is why this is necessary. """ + + def get_template_data(self, entry, metadata, template): + rv = DefaultTemplateDataProvider.get_template_data(self, entry, + metadata, template) + rv['path'] = rv['name'] + return rv + + class CfgJinja2Generator(CfgGenerator): """ The CfgJinja2Generator allows you to use the `Jinja2 `_ templating system to generate @@ -24,15 +38,15 @@ class CfgJinja2Generator(CfgGenerator): #: .crypt.jinja2 files __priority__ = 50 - def __init__(self, fname, spec, encoding): - CfgGenerator.__init__(self, fname, spec, encoding) + def __init__(self, fname, spec): + CfgGenerator.__init__(self, fname, spec) if not HAS_JINJA2: raise PluginExecutionError("Jinja2 is not available") __init__.__doc__ = CfgGenerator.__init__.__doc__ def get_data(self, entry, metadata): - template = Template(self.data.decode(self.encoding)) - name = entry.get('realname', entry.get('name')) - return template.render(metadata=metadata, name=name, path=name, - source_path=name, repo=SETUP['repo']) + template = Template(self.data.decode(Bcfg2.Options.setup.encoding)) + return template.render( + get_template_data(entry, metadata, self.name, + default=DefaultJinja2DataProvider())) get_data.__doc__ = CfgGenerator.get_data.__doc__ -- cgit v1.2.3-1-g7c22