diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-07-08 14:54:32 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-07-08 14:54:32 +0000 |
| commit | 2793484d3e201515cbc9a5a5dd5106891a4b37bc (patch) | |
| tree | efaa6190011446e5dbe425a76707e40f838a0da8 | |
| parent | a1f12be881a025d0640052554e8d53cdfe19afa9 (diff) | |
| download | pyramid-2793484d3e201515cbc9a5a5dd5106891a4b37bc.tar.gz pyramid-2793484d3e201515cbc9a5a5dd5106891a4b37bc.tar.bz2 pyramid-2793484d3e201515cbc9a5a5dd5106891a4b37bc.zip | |
Reuse the same PageTemplateFile for all requests to the same view.
| -rw-r--r-- | repoze/bfg/metaconfigure.py | 5 | ||||
| -rw-r--r-- | repoze/bfg/sampleapp/run.py | 5 | ||||
| -rw-r--r-- | repoze/bfg/template.py | 4 | ||||
| -rw-r--r-- | 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, ['<div>\n</div>']) - 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 |
