[Checkins] SVN: grok/trunk/src/grok/ implemented before-method.

Wolfgang Schnerring wosc at wosc.de
Mon Oct 16 10:25:02 EDT 2006


Log message for revision 70694:
  implemented before-method.

Changed:
  U   grok/trunk/src/grok/_grok.py
  A   grok/trunk/src/grok/tests/view/before.py

-=-
Modified: grok/trunk/src/grok/_grok.py
===================================================================
--- grok/trunk/src/grok/_grok.py	2006-10-16 14:18:36 UTC (rev 70693)
+++ grok/trunk/src/grok/_grok.py	2006-10-16 14:25:01 UTC (rev 70694)
@@ -41,6 +41,8 @@
 class View(BrowserPage):
 
     def __call__(self):
+        self.before()
+
         template = getattr(self, 'template', None)
         if not template:
             return self.render()
@@ -51,6 +53,9 @@
         namespace['context'] = self.context
         return template.pt_render(namespace)
 
+    def before(self):
+        pass
+
 class PageTemplate(TrustedAppPT, pagetemplate.PageTemplate):
     expand = 0
 

Added: grok/trunk/src/grok/tests/view/before.py
===================================================================
--- grok/trunk/src/grok/tests/view/before.py	2006-10-16 14:18:36 UTC (rev 70693)
+++ grok/trunk/src/grok/tests/view/before.py	2006-10-16 14:25:01 UTC (rev 70694)
@@ -0,0 +1,38 @@
+"""
+Before a view is rendered, the before() method is executed. It can be
+used e. g. to execute side effects or set up data for use in the
+template.
+
+  >>> grok.grok(__name__)
+
+  >>> manfred = Mammoth()
+  >>> from zope.publisher.browser import TestRequest
+  >>> request = TestRequest()
+  >>> from zope import component
+  >>> view = component.getMultiAdapter((manfred, request), name='cavepainting')
+  >>> print view()
+  <html>
+  <body>
+  <h1>red</h1>
+  </body>
+  </html>
+  
+
+"""
+import grok
+
+class Mammoth(grok.Model):
+    pass
+
+class CavePainting(grok.View):
+    def before(self):
+        self.color = "red"
+
+
+cavepainting = grok.PageTemplate("""\
+<html>
+<body>
+<h1 tal:content="python: view.color"/>
+</body>
+</html>
+""")



More information about the Checkins mailing list