Browse Source

Add non-decorator template filter methods.

Suggested by @Poincare on GitHub, on @Reisen's pull request:
https://github.com/mitsuhiko/flask/pull/272
pull/336/merge
Ron DuPlain 13 years ago
parent
commit
ce4d589d5b
  1. 12
      flask/app.py
  2. 25
      flask/blueprints.py

12
flask/app.py

@ -1018,10 +1018,20 @@ class Flask(_PackageBoundObject):
function name will be used. function name will be used.
""" """
def decorator(f): def decorator(f):
self.jinja_env.filters[name or f.__name__] = f self.add_template_filter(f, name=name)
return f return f
return decorator return decorator
@setupmethod
def add_template_filter(self, f, name=None):
"""Register a custom template filter. Works exactly like the
:meth:`template_filter` decorator.
:param name: the optional name of the filter, otherwise the
function name will be used.
"""
self.jinja_env.filters[name or f.__name__] = f
@setupmethod @setupmethod
def before_request(self, f): def before_request(self, f):
"""Registers a function to run before each request.""" """Registers a function to run before each request."""

25
flask/blueprints.py

@ -185,17 +185,30 @@ class Blueprint(_PackageBoundObject):
return f return f
return decorator return decorator
def app_template_filter(self, name = None): def app_template_filter(self, name=None):
"""Like :meth:`Flask.template_filter` but for a blueprint. The filter """Register a custom template filter, available application wide. Like
is available for the entire application. :meth:`Flask.template_filter` but for a blueprint.
:param name: the optional name of the filter, otherwise the
function name will be used.
""" """
def decorator(f): def decorator(f):
def register_template(state): self.add_app_template_filter(f, name=name)
state.app.jinja_env.filters[name or f.__name__] = f
self.record_once(register_template)
return f return f
return decorator return decorator
def add_app_template_filter(self, f, name=None):
"""Register a custom template filter, available application wide. Like
:meth:`Flask.add_template_filter` but for a blueprint. Works exactly
like the :meth:`app_template_filter` decorator.
:param name: the optional name of the filter, otherwise the
function name will be used.
"""
def register_template(state):
state.app.jinja_env.filters[name or f.__name__] = f
self.record_once(register_template)
def before_request(self, f): def before_request(self, f):
"""Like :meth:`Flask.before_request` but for a blueprint. This function """Like :meth:`Flask.before_request` but for a blueprint. This function
is only executed before each request that is handled by a function of is only executed before each request that is handled by a function of

Loading…
Cancel
Save