diff -r 29211b72b64f -r 6d87fbbfc10a roundup/cgi/engine_jinja2.py --- a/roundup/cgi/engine_jinja2.py Mon Jun 15 18:16:06 2015 +0300 +++ b/roundup/cgi/engine_jinja2.py Thu Jun 18 15:36:58 2015 +0300 @@ -33,6 +33,7 @@ import jinja2 import gettext +import pprint # http://jinja.pocoo.org/docs/api/#loaders @@ -43,12 +44,13 @@ extensions = [ 'jinja2.ext.autoescape', ] - print "Jinja2 templates: ", dir + print "Jinja2 templates: ", dir print "Extensions: ", extensions self._env = jinja2.Environment( loader=jinja2.FileSystemLoader(dir), extensions=extensions ) + self._env.filters.update(additional_filters) def check(self, tplname): #print tplname @@ -86,3 +88,30 @@ # [ ] figure out what are these for raise NotImplemented #return getattr(self._pt, name) + +# -- customizing Jinja2 --- + +def debug(value): + ''' Dump variable in html. + ''' + alist = [] + for attr in dir(value): + if attr[0] == '_': + continue + aval = getattr(value, attr) + if callable(aval): + alist.append("{} ({})".format( attr, type(aval).__name__)) + else: + alist.append("{} ({}) = {}".format( attr, type(aval).__name__, aval)) + + pprinter = pprint.PrettyPrinter(depth=1) + return "\n
\n" + "Type is '{}'.".format(type(value).__name__) +\
+            "\nValue(s) is:\n" + pprinter.pformat(value) +\
+            "\nAttributes are:\n" + '\n'.join(alist) +\
+            "\n
\n" + + + +# - declare additional filters dictionary- +additional_filters = {} +additional_filters['debug'] = debug