]> git.proxmox.com Git - mirror_ifupdown2.git/blob - pkg/template.py
Doc updates + cleanup
[mirror_ifupdown2.git] / pkg / template.py
1 #!/usr/bin/python
2
3 import logging
4 import traceback
5 from utils import *
6
7 class templateEngine():
8 """ has template rendering methods """
9
10 def __init__(self, template_engine, template_lookuppath=None):
11 self.logger = logging.getLogger('ifupdown.' +
12 self.__class__.__name__)
13 self.tclass = None
14 self.tclassargs = {}
15 self.render = self._render_default
16 if template_engine == 'mako':
17 try:
18 self.tclass = utils.importName('mako.template', 'Template')
19 except Exception, e:
20 self.logger.warn('unable to load template engine %s (%s)'
21 %(template_engine, str(e)))
22 pass
23 if template_lookuppath:
24 try:
25 self.logger.debug('setting template lookuppath to %s'
26 %template_lookuppath)
27 lc = utils.importName('mako.lookup', 'TemplateLookup')
28 self.tclassargs['lookup'] = lc(
29 directories=template_lookuppath.split(':'))
30 except Exception, e:
31 self.logger.warn('unable to set template lookup path' +
32 ' %s (%s)' %(template_lookuppath, str(e)))
33 pass
34 self.render = self._render_mako
35 else:
36 self.logger.info('skip template processing.., ' +
37 'template engine not found')
38
39 def _render_default(self, textdata):
40 return textdata
41
42 def _render_mako(self, textdata):
43 """ render textdata passed as argument using mako
44
45 Returns rendered textdata """
46
47 if not self.tclass:
48 return textdata
49 self.logger.info('template processing on interfaces file ...')
50 t = self.tclass(text=textdata, output_encoding='utf-8',
51 lookup=self.tclassargs.get('lookup'))
52 return t.render()