[Zope-dev] ZPattens Question? Guestbook example

Steve Alexander steve@cat-box.net
Sun, 03 Sep 2000 22:38:00 +0100


Hi James,

Please don't post to the list in HTML.

James Johnson wrote:

>         
>         Hello,
>         I'm trying to get the basic app building concept down with
>         ZPatterns.
>         Forgive me if I'm way off the mark.  I'm building off the guest
>         book
>         example from the new Zope book.  What I've done is created a
>         product
>         folder call Gbook.  Inside I've created a dtml method index_html, a
>         specialist named Guestbook and a Dataskin instance called
>         Guestbook_entry. I have one property sheet named GBookProps defined
>         for dataskin ZClass.  Instead of storing the guestbook entries in
>         documents I'm trying to store them using the dataskin database.
>         
>         In the Specialist(Guestbook) I have 3 methods addEntry,
>         addEntryAction, and addEntryForm
>         When I call addEntry I get.
>         TypeError
>         sequence-index must be an integer
>         I thought I was so close to understanding me not understanding. :)
>         It seems to me that the "only" way to produce a ZPatterns based
>         product is to do it from python.
>         How about this, should I be trying to add entries this way?  
>         """dtml method addEntry"""
>         <dtml-var standard_html_header>
>         <center>
>         <h2> Inserting new Guest Book Table Info Item!</h2>
>         <dtml-let id="'entry_%d' % len(self.objectIds())">
>                  ni="newItem(Guestbook)">
>         </dtml-let>

This is a bit odd -- you're closing your dtml-let tag immediately after 
opening it.
Also, I don't understand your call to newItem. You should be passing an 
id into it.

>            <dtml-call "ni.propertysheets.manage_addPropertySheet
>         (id='GBookProps', ns=''

You probably ought to close the bracket, quote and tag here.

>         <dtml-let nips="ni.propertysheets.get('GBookProps')">

The variable "ni" won't be bound to anything in particular here.


>            <dtml-call "nips.manage_addProperty('guest_name', guest_name,
>         'string')">
>            <dtml-call "nips.manage_changeProperties(REQUEST)">
>         
>         </dtml-let>
>         <form action=index_html>
>         <input type=submit value="OK">
>         </form>
>         </center>

You can use ZPatterns from DTML alone quite easily. However, some things 
are easier from an external method or a python method.

--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net