summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-08 14:54:32 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-08 14:54:32 +0000
commit2793484d3e201515cbc9a5a5dd5106891a4b37bc (patch)
treeefaa6190011446e5dbe425a76707e40f838a0da8
parenta1f12be881a025d0640052554e8d53cdfe19afa9 (diff)
downloadpyramid-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.py5
-rw-r--r--repoze/bfg/sampleapp/run.py5
-rw-r--r--repoze/bfg/template.py4
-rw-r--r--repoze/bfg/tests/test_template.py20
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