From a15e35f5f0978f3d524aea5eafc648fc220311d6 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Wed, 16 Jul 2008 15:32:03 +0000 Subject: Added 'repoze.bfg.push:pushpage' decorator o Creates BFG views from callables which take (context, request) and return a mapping of top-level names. --- repoze/bfg/push.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 repoze/bfg/push.py (limited to 'repoze/bfg/push.py') diff --git a/repoze/bfg/push.py b/repoze/bfg/push.py new file mode 100644 index 000000000..205c7f26e --- /dev/null +++ b/repoze/bfg/push.py @@ -0,0 +1,25 @@ +import os.path +from repoze.bfg.template import render_template + +class pushpage(object): + """ Decorator for functions which return template namespaces. + + E.g.: + + @pushpage('www/my_template.pt') + def my_view(context, request): + return {'a': 1, 'b': ()} + """ + def __init__(self, template): + self.template = template + + def __call__(self, wrapped): + prefix = os.path.dirname(wrapped.func_globals['__file__']) + path = os.path.join(prefix, self.template) + + def _curried(context, request): + kw = wrapped(context, request) + return render_template(path, **kw) + _curried.__name__ = wrapped.__name__ + + return _curried -- cgit v1.2.3