From 2793484d3e201515cbc9a5a5dd5106891a4b37bc Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Tue, 8 Jul 2008 14:54:32 +0000 Subject: Reuse the same PageTemplateFile for all requests to the same view. --- repoze/bfg/metaconfigure.py | 5 ++++- repoze/bfg/sampleapp/run.py | 5 +++++ repoze/bfg/template.py | 4 ++-- repoze/bfg/tests/test_template.py | 20 ++++++++++---------- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/repoze/bfg/metaconfigure.py b/repoze/bfg/metaconfigure.py index b486fbea7..f958d1f2f 100644 --- a/repoze/bfg/metaconfigure.py +++ b/repoze/bfg/metaconfigure.py @@ -13,6 +13,7 @@ from repoze.bfg.interfaces import IRequest from repoze.bfg.interfaces import IViewFactory from repoze.bfg.template import ViewPageTemplateFile +from repoze.bfg.template import PageTemplateFile class ViewBase: def __init__(self, context, request): @@ -40,6 +41,8 @@ def page(_context, if not os.path.isfile(template): raise ConfigurationError("No such file", template) + template_inst = PageTemplateFile(template) + def view_factory(context, request): if template: if class_ is None: @@ -48,7 +51,7 @@ def page(_context, base = class_ class ViewClass(base): __name__ = name - index = ViewPageTemplateFile(template) + index = ViewPageTemplateFile(template_inst) return ViewClass(context, request) else: diff --git a/repoze/bfg/sampleapp/run.py b/repoze/bfg/sampleapp/run.py index d0eb53a51..2c7722892 100644 --- a/repoze/bfg/sampleapp/run.py +++ b/repoze/bfg/sampleapp/run.py @@ -11,5 +11,10 @@ if __name__ == '__main__': def get_root(environ): return blog app = make_app(get_root, sampleapp) +## from repoze.profile.profiler import AccumulatingProfileMiddleware +## profiler = AccumulatingProfileMiddleware( +## app, +## log_filename='profile.log', +## ) from paste import httpserver httpserver.serve(app, host='0.0.0.0', port='5432') diff --git a/repoze/bfg/template.py b/repoze/bfg/template.py index e4606938f..b73a095f3 100644 --- a/repoze/bfg/template.py +++ b/repoze/bfg/template.py @@ -14,8 +14,8 @@ class PageTemplateFile(PageTemplateFileBase): return Response(result) class ViewPageTemplateFile(property): - def __init__(self, filename, **kwargs): - self.template = PageTemplateFile(filename, **kwargs) + def __init__(self, template): + self.template = template property.__init__(self, self.render) def render(self, view): diff --git a/repoze/bfg/tests/test_template.py b/repoze/bfg/tests/test_template.py index e726afedc..322810fb4 100644 --- a/repoze/bfg/tests/test_template.py +++ b/repoze/bfg/tests/test_template.py @@ -63,19 +63,18 @@ class ViewPageTemplateFileTests(unittest.TestCase, Base): def test_render(self): self._zcmlConfigure() - minimal = self._getTemplatePath('minimal.pt') - instance = self._makeOne(minimal) + f = DummyPageTemplateFile() + instance = self._makeOne(f) class View: context = 'context' request = 'request' view = View() template = instance.render(view) - result = template() - from webob import Response - self.failUnless(isinstance(result, Response)) - self.assertEqual(result.app_iter, ['
\n
']) - self.assertEqual(result.status, '200 OK') - self.assertEqual(len(result.headerlist), 2) + args, kw = template(foo='bar') + self.assertEqual(kw['request'], 'request') + self.assertEqual(kw['options'], {'foo':'bar'}) + self.assertEqual(kw['context'], 'context') + self.assertEqual(kw['view'], view) class TemplateViewTests(unittest.TestCase, Base): def setUp(self): @@ -99,5 +98,6 @@ class TemplateViewTests(unittest.TestCase, Base): result = view('foo') self.assertEqual(result, _marker) - - +class DummyPageTemplateFile: + def render(self, *arg, **kw): + return arg, kw -- cgit v1.2.3