Moved Jinja2 stuff to its own module, and added |undertitle filter.

This commit is contained in:
Sybren A. Stüvel 2016-09-07 16:03:40 +02:00
parent f03566a10f
commit b2e8711ac4
2 changed files with 36 additions and 13 deletions

View File

@ -5,10 +5,10 @@ import logging
import logging.config import logging.config
import subprocess import subprocess
import tempfile import tempfile
import jinja2
import os import os
import os.path import os.path
import jinja2
from eve import Eve from eve import Eve
import flask import flask
from flask import render_template, request from flask import render_template, request
@ -16,8 +16,7 @@ from flask.templating import TemplateNotFound
from pillar.api import custom_field_validation from pillar.api import custom_field_validation
from pillar.api.utils import authentication from pillar.api.utils import authentication
from pillar.web.utils import pretty_date import pillar.web.jinja
from pillar.web.nodes.routes import url_for_node
from . import api from . import api
from . import web from . import web
@ -249,15 +248,7 @@ class PillarServer(Eve):
custom_jinja_loader = jinja2.ChoiceLoader(paths_list) custom_jinja_loader = jinja2.ChoiceLoader(paths_list)
self.jinja_loader = custom_jinja_loader self.jinja_loader = custom_jinja_loader
def format_pretty_date(d): pillar.web.jinja.setup_jinja_env(self.jinja_env)
return pretty_date(d)
def format_pretty_date_time(d):
return pretty_date(d, detail=True)
self.jinja_env.filters['pretty_date'] = format_pretty_date
self.jinja_env.filters['pretty_date_time'] = format_pretty_date_time
self.jinja_env.globals['url_for_node'] = url_for_node
def _config_static_dirs(self): def _config_static_dirs(self):
pillar_dir = os.path.dirname(os.path.realpath(__file__)) pillar_dir = os.path.dirname(os.path.realpath(__file__))

32
pillar/web/jinja.py Normal file
View File

@ -0,0 +1,32 @@
"""Our custom Jinja filters and other template stuff."""
from __future__ import absolute_import
import jinja2.filters
from pillar.web.utils import pretty_date
from pillar.web.nodes.routes import url_for_node
def format_pretty_date(d):
return pretty_date(d)
def format_pretty_date_time(d):
return pretty_date(d, detail=True)
def format_undertitle(s):
"""Underscore-replacing title filter.
Replaces underscores with spaces, and then applies Jinja2's own title filter.
"""
return jinja2.filters.do_title(s.replace('_', ' '))
def setup_jinja_env(jinja_env):
jinja_env.filters['pretty_date'] = format_pretty_date
jinja_env.filters['pretty_date_time'] = format_pretty_date_time
jinja_env.filters['undertitle'] = format_undertitle
jinja_env.globals['url_for_node'] = url_for_node