Source code for errbot.templating
import logging
from pathlib import Path
from jinja2 import Environment, FileSystemLoader
from errbot.plugin_info import PluginInfo
log = logging.getLogger(__name__)
[docs]
def make_templates_path(root: Path) -> Path:
return root / "templates"
system_templates_path = str(make_templates_path(Path(__file__).parent))
template_path = [system_templates_path]
env = Environment(
loader=FileSystemLoader(template_path),
trim_blocks=True,
keep_trailing_newline=False,
autoescape=True,
)
[docs]
def tenv() -> Environment:
return env
[docs]
def add_plugin_templates_path(plugin_info: PluginInfo) -> None:
global env
tmpl_path = make_templates_path(plugin_info.location.parent)
if tmpl_path.exists():
log.debug(
"Templates directory found for %s plugin [%s]", plugin_info.name, tmpl_path
)
template_path.append(str(tmpl_path)) # for webhooks
# Ditch and recreate a new templating environment
env = Environment(loader=FileSystemLoader(template_path), autoescape=True)
return
log.debug(
"No templates directory found for %s plugin in [%s]",
plugin_info.name,
tmpl_path,
)
[docs]
def remove_plugin_templates_path(plugin_info: PluginInfo) -> None:
global env
tmpl_path = str(make_templates_path(plugin_info.location.parent))
if tmpl_path in template_path:
template_path.remove(tmpl_path)
# Ditch and recreate a new templating environment
env = Environment(loader=FileSystemLoader(template_path), autoescape=True)