Permit filters.py file in template dir to define custom jinja filters

This commit is contained in:
Alexandre Chataignon
2017-03-03 06:19:48 +01:00
parent 433f1fd92a
commit 34bb3899c1

View File

@@ -26,8 +26,10 @@ from __future__ import absolute_import
import codecs
import jinja2
import logging
import imp
import os
import sys
import types
from distutils.dir_util import copy_tree
from jinja2 import Environment, FileSystemLoader, ChoiceLoader, PrefixLoader
@@ -81,6 +83,13 @@ class Writer(object):
**env_options
)
# handle optional filters.py
filters_py = os.path.join(self.theme, 'filters.py')
if os.path.exists(filters_py):
mod = imp.load_source('filters', filters_py)
for name in [name for name in dir(mod) if isinstance(getattr(mod, name), types.FunctionType)]:
env.filters[name] = getattr(mod, name)
try:
self.template = env.get_template(self.template_file)
except TemplateNotFound: