[Zope] ZClasses meet PythonScripts, sample request

Timothy Wilson wilson@visi.com
Sun, 14 Jan 2001 21:41:02 -0600 (CST)


On Sun, 14 Jan 2001, Jim Washington wrote:

> You probably want the work to be done in the context of an instance of
> the class, so assure you have "context" bound to the Python Script on
> the "bindings" tab.  It's bound by default.
> 
> You might want to name the Script in a Zopish way to distinguish it from
> other scripts that may do other things.  I would probably call it
> manage_changeCDProperties.
> 
> You will want to pass REQUEST to it so you can use it like the Zope
> builtins:
> 
> containerName.CDInfoName.manage_changeCDProperties(REQUEST)
> 
> So, put REQUEST in the parameters list.

I'm afraid I'm a bit confused here. Is 'CDInfoName' the id of an instance of
this CD class? If so, what would 'containerName' be?

In the particular example I'm thinking about (not a CD collection), I've
created a form that displays the current properties of the class (a job
opening for the H.R. deparment in my case), allows the user to modify any of
the properties in the form, and submit those changes. I suppose for the CD
example it would something like: (ignoring everything but the form)

<form action="manage_changeCDProperties(REQUEST)">
<table border="0">

<tr><th>Title</th>
  <td><input type="text" name="title" value="<dtml-var title>"></td>
</tr>

<tr><th>Artist</th>
  <td><input type="text" name="artist" value="<dtml-var artist>"></td>
</tr>

<tr><td>
<input type="submit" value=" Submit Edits ">
</td></tr>
</table>
</form>

I don't think I'm calling the PythonScript correctly. In fact, I suspect I'm
quite a bit off.

> Inside the script, you would use Zope's manage_changeProperties method:
> 
> context.propertysheets['cd_info'].manage_changeProperties(REQUEST)
> -or-
> context.propertysheets.cd_info.manage_changeProperties(REQUEST)

Following Evan's advice, would this then be:

container.propertysheets['cd_info'].manage_changeProperties(REQUEST)

So that's a one-liner? Hmmm. Cool if true. :-)

Let's say that I wanted to redirect the user back to the Web page where they
had begun this process. How would that be accomplished?

-Tim

> Timothy Wilson wrote:
> > 
> > Hi everyone,
> > 
> > I'm looking forward to using some PythonScripts as methods of some ZClasses
> > because it seems like a much cleaner way to do things. I wonder if one of
> > the PythonScript gurus out there would be willing to show an example of two
> > presumably common PythonScript/ZClass tasks: processing changes to a
> > property sheet using form input and deleting a ZClass instance.
> > 
> > Let's say we've got a ZClass for keeping track of a CD collection. (I recall
> > seeing that example in a ZClass How-To.) Let's say the ZClass has a property
> > sheet called 'cd_info' with the following properties:
> > 
> > title (string)
> > artist (string)
> > date_purchased (date)
> > 
> > (for extra credit, add a 'songs' property of type 'lines' :-)
> > 
> > Is that enough info? Anybody want to take a crack at this? (This would
> > surely be good info to put at zope.org somewhere.)
> > 
> > -Tim

--
Tim Wilson      | Visit Sibley online:         | Check out:
Henry Sibley HS | http://www.isd197.k12.mn.us/ | http://www.zope.org/
W. St. Paul, MN |                              | http://slashdot.org/
wilson@visi.com |   <dtml-var pithy_quote>     | http://linux.com/