[Checkins] SVN: grok/trunk/src/grok/ Rename before() to update() on
grok.View and support redirects from within
Philipp von Weitershausen
philikon at philikon.de
Wed Jan 10 12:29:19 EST 2007
Log message for revision 71883:
Rename before() to update() on grok.View and support redirects from within
update(). The template won't be called subsequently.
Changed:
U grok/trunk/src/grok/components.py
U grok/trunk/src/grok/ftests/view/macros.py
U grok/trunk/src/grok/tests/view/before.py
A grok/trunk/src/grok/tests/view/update_redirect.py
-=-
Modified: grok/trunk/src/grok/components.py
===================================================================
--- grok/trunk/src/grok/components.py 2007-01-10 17:09:52 UTC (rev 71882)
+++ grok/trunk/src/grok/components.py 2007-01-10 17:29:19 UTC (rev 71883)
@@ -137,7 +137,11 @@
interface.Interface, name=self.module_info.package_dotted_name)
def __call__(self):
- self.before()
+ self.update()
+ if self.request.response.getStatus() in (302, 303):
+ # Somewhere in update(), a redirect was triggered. Don't
+ # continue rendering the template or doing anything else.
+ return
template = getattr(self, 'template', None)
if not template:
@@ -183,7 +187,7 @@
def redirect(self, url):
return self.request.response.redirect(url)
- def before(self):
+ def update(self):
pass
Modified: grok/trunk/src/grok/ftests/view/macros.py
===================================================================
--- grok/trunk/src/grok/ftests/view/macros.py 2007-01-10 17:09:52 UTC (rev 71882)
+++ grok/trunk/src/grok/ftests/view/macros.py 2007-01-10 17:29:19 UTC (rev 71883)
@@ -46,7 +46,7 @@
class Grilled(grok.View):
- def before(self):
+ def update(self):
self.spices = "Pepper and salt"
painting = grok.PageTemplate("""\
Modified: grok/trunk/src/grok/tests/view/before.py
===================================================================
--- grok/trunk/src/grok/tests/view/before.py 2007-01-10 17:09:52 UTC (rev 71882)
+++ grok/trunk/src/grok/tests/view/before.py 2007-01-10 17:29:19 UTC (rev 71883)
@@ -1,5 +1,5 @@
"""
-Before a view is rendered, the before() method is executed. It can be
+Before a view is rendered, the update() method is executed. It can be
used e. g. to execute side effects or set up data for use in the
template.
@@ -32,7 +32,7 @@
pass
class CavePainting(grok.View):
- def before(self):
+ def update(self):
self.color = "red"
Added: grok/trunk/src/grok/tests/view/update_redirect.py
===================================================================
--- grok/trunk/src/grok/tests/view/update_redirect.py 2007-01-10 17:09:52 UTC (rev 71882)
+++ grok/trunk/src/grok/tests/view/update_redirect.py 2007-01-10 17:29:19 UTC (rev 71883)
@@ -0,0 +1,36 @@
+"""
+When a view's update() method redirects somewhere else, the template
+is not executed subsequently.
+
+ >>> grok.grok(__name__)
+
+ >>> manfred = Mammoth()
+ >>> from zope.publisher.browser import TestRequest
+ >>> request = TestRequest()
+ >>> from zope.component import getMultiAdapter
+ >>> view = getMultiAdapter((manfred, request), name='cavepainting')
+ >>> print view()
+ None
+ >>> print request.response.getStatus()
+ 302
+ >>> print request.response.getHeader('Location')
+ somewhere-else
+
+"""
+import grok
+
+class Mammoth(grok.Model):
+ pass
+
+class CavePainting(grok.View):
+ def update(self):
+ self.request.response.redirect('somewhere-else')
+
+
+cavepainting = grok.PageTemplate("""\
+<html>
+<body>
+<h1 tal:content="this-is-an-error" />
+</body>
+</html>
+""")
Property changes on: grok/trunk/src/grok/tests/view/update_redirect.py
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list