[Zope-CVS] CVS: Packages/JobBoardEx - thanks.pt:1.1 ApproveJobsView.py:1.7 JobCreateView.py:1.6 Tutorial.html:1.18

Guido van Rossum guido@python.org
Mon, 17 Jun 2002 17:19:04 -0400


Update of /cvs-repository/Packages/JobBoardEx
In directory cvs.zope.org:/tmp/cvs-serv6979

Modified Files:
	ApproveJobsView.py JobCreateView.py Tutorial.html 
Added Files:
	thanks.pt 
Log Message:
More variation in redirection, to server as a a more varied example.

=== Added File Packages/JobBoardEx/thanks.pt ===
<html>
<head>
<title>Thank you for your job submission</title>
</head>
<body>
<h1>Thank you for your job submission</h1>

<p>Our site manager will review and publish it shortly.  Please use
one of the following links to continue to use our site:

<ul>

<li><a href="/">Back to site home</a>

<p><li><a href=".">Back to job board</a>

<p><li><a href="edit.html">Submit another job</a>

</ul>

</body>
</html>


=== Packages/JobBoardEx/ApproveJobsView.py 1.6 => 1.7 ===
                 del self.context[jobid]
 
-        self.request.getResponse().redirect('review.html')
+        response = self.request.getResponse()
+        if self.context.getPendingIds():
+            response.redirect('review.html')
+        else:
+            response.redirect('.')


=== Packages/JobBoardEx/JobCreateView.py 1.5 => 1.6 ===
     preview = ViewPageTemplateFile('preview.pt')
 
+    thanks = ViewPageTemplateFile('thanks.pt')
+
     def create(self, submitter='', summary='', description='', contact=''):
         # Validation code should go here
         job = Job(submitter, summary, description, contact)
         self.context.add(job)
-        self.request.getResponse().redirect('.')
+        return self.thanks()


=== Packages/JobBoardEx/Tutorial.html 1.17 => 1.18 ===
 
 <p>Finally, the create() method must send a response to the browser.
-There are different ways to do that.  The example uses a simple
-redirection that sends the browser back to the job list.
+There are different ways to do that.  The example invokes another page
+template, <a href="thanks.pt">thanks.pt</a>, which displays a
+thank-you message and offers several links to continue browsing.
 
 <p>A more realistic create() method should include validation code,
 e.g. checking that all fields are filled in, and perhaps attempting
@@ -437,10 +438,14 @@
 the job, and it remains in the PendingApproval state.
 
 <p>Finally, the approve() method directs the browser back to the view
-named review.html.  As an aside, note that this means we can't just
-change the name of that form in the configuration directives and the
-page templates; we'd have to change it in the Python code for the
-approve() method too.
+named review.html.  In contrast with the JobCreateView class, which
+invoked a page template at this point, we "redirect" the browser to
+another page.  This is done by calling the redirect() method of the
+response object with the (relative) URL of the new page.  The response
+is retrieved from the request by calling its getResponse() method.  As
+an example of the power of this approach, we redirect to the review
+page if there are more jobs to review, but to the default view of the
+job list if there are no more jobs to review.
 
 
 <h2>Page Templates</h2>