[Zope] Add property to DTML Document, not via a script?

Casey Duncan c.duncan@nlada.org
Wed, 17 Oct 2001 14:52:35 -0400


On Wednesday 17 October 2001 11:27 am, Roger Erens allegedly wrote:
> Hello all,
>
> I've got this:
>
> Root Folder
>   --AddPlayer (DTML Method)
>   --AddPlayerScript (Python Script)
>   --Players (Folder)
>     --Player1 (DTML Document)
>     --Player2 (DTML Document)
>     --...
>
> To add a player (DTMLDocument) in the Players folder and then add a
> property to the newly created DTMLDocument I needed to take refuge to
> calling the Python script (as is shown in chapter 5 of the Zope Book).
> Could someone give me the 'DTML translation' of the script so that I can
> keep the functionality together in the AddPlayer DTMLMethod?
> I think I would need something like
> <dtml-call expr="Player3.manage_addProperty('Score', 0.00, 'float')">
> but with something instead of the hardcoded 'Player3'.
>
> This is the AddPlayer method:
> [snip]
> <dtml-with Players>
>   <dtml-let NewPlayerID="'Player3'">
>    <dtml-call
> expr="manage_addDTMLDocument(id=NewPlayerID,title='nonsense')">
>    <dtml-call expr="AddPlayerScript(NewPlayerID)">
>   </dtml-let>
> </dtml-with>
> [snip]
>
> And this is the AddPlayerScript (called with the parameter playerID):
> [snip]
> doc=getattr(context,playerID)
> doc.manage_addProperty('Score', 0.00, 'float')
> [snip]
>
> PS: Yes, in the long run, I *will* put all the functionality in a
> Pythonscript and skip the DTMLmethod alltogether.
> First I want to understand this stuff.

Try this in place of the Py script call:

<dtml-call expr="_.getitem(NewPlayerID).manage_addProperty('Score', 0.00, 
'float')">

If you need to add multiple properties, wrap them in a "with" tag:

<dtml-with expr="_.getitem(NewPlayerID)">
  <dtml-call expr="manage_addProperty(...)">
  <dtml-call expr="manage_addProperty(...)">
  <dtml-call expr="manage_addProperty(...)">
  ...
</dtml-with>

hth,
/---------------------------------------------------\
  Casey Duncan, Sr. Web Developer
  National Legal Aid and Defender Association
  c.duncan@nlada.org
\---------------------------------------------------/