# HG changeset patch # User Jeff Hammel # Date 1290020553 28800 # Node ID 807c8eef80982051d18a2fb4daa80c0d8a1ae097 # Parent cf19d2e129defe8d1d4d5f9106fa8c4319b33c2c add a handler for tempita; should rename the package (at some point) template_view diff -r cf19d2e129de -r 807c8eef8098 genshi_view/template/+package+/handlers.py --- a/genshi_view/template/+package+/handlers.py Wed May 05 11:59:39 2010 -0700 +++ b/genshi_view/template/+package+/handlers.py Wed Nov 17 11:02:33 2010 -0800 @@ -3,8 +3,11 @@ these are instantiated for every request, then called """ +import os +from pkg_resources import resource_filename from urlparse import urlparse from webob import Response, exc +from tempita import HTMLTemplate class HandlerMatchException(Exception): """the handler doesn't match the request""" @@ -49,6 +52,31 @@ def redirect(self, location): raise exc.HTTPSeeOther(location=location) +class TempitaHandler(Handler): + + template_dirs = [ resource_filename(__name__, 'templates') ] + + def __init__(self, app, request): + Handler.__init__(self, app, request) + self.data = { 'request': request, + 'link': self.link } + + def __call__(self): + return getattr(self, self.request.method.title())() + + def find_template(self, template): + for d in self.template_dirs: + path = os.path.join(d, template) + if os.path.exists(path): + return HTMLTemplate.from_filename(path) + + def Get(self): + # needs to have self.template set + template = self.find_template(self.template) + return Response(content_type='text/html', + body=template.substitute(**self.data)) + + class GenshiHandler(Handler): def __init__(self, app, request): @@ -65,6 +93,8 @@ return Response(content_type='text/html', body=template.generate(**self.data).render('html')) + + class Index(GenshiHandler): template = 'index.html' methods=set(['GET', 'POST']) diff -r cf19d2e129de -r 807c8eef8098 genshi_view/template/setup.py_tmpl --- a/genshi_view/template/setup.py_tmpl Wed May 05 11:59:39 2010 -0700 +++ b/genshi_view/template/setup.py_tmpl Wed Nov 17 11:02:33 2010 -0800 @@ -24,7 +24,8 @@ 'WebOb', 'Paste', 'PasteScript', - 'genshi' + 'genshi', + 'tempita' ], entry_points=""" # -*- Entry points: -*-