[Zope] Changing properties of objects.

complaw@hal-pc.org complaw@hal-pc.org
Wed, 22 May 2002 00:27:20 GMT


I'm trying to make some nice (fancy) screens so that my users can edit DTML 
Documents without using the standard management interface.  For testing 
purposes, I created a DTML document with a string property entitled "new_prop". 
My view of this DTML Document looks like this:

---------
<dtml-var standard_html_header>
<h2><dtml-var title_or_id></h2>
<p>
This is the <dtml-var id> Document.
</p>

<P><a href="editForm?item_id=<dtml-var id>">Edit</P>

<dtml-var standard_html_footer>
----------

The code for the editForm DTML Method looks like:

----------
<dtml-var standard_html_header>
<h2>Edit the Record</h2>
<form action="editRec" method="post">
id: <input type=text name="the_id" value="<dtml-var item_id>"><BR>
<dtml-with expr="_.getitem(item_id)">
new_prop: <input type="text name="new_prop" value="<dtml-var new_prop>"><BR>
<input type="submit>
</dtml-with>
</form>
<dtml-var standard_html_footer>
----------

.. and the correct values do indeed appear in the above form.  The editRecord 
DTML Method looks like this:

----------
<dtml-var standard_html_header>
  <dtml-call expr="editRec(the_id, new_prop)">
<h2 align="center">Success!</h2>
<dtml-var standard_html_footer>
----------

.. and no, I do not get success.  The editRec method looks like this:

----------
doc=getattr(context, the_id)
doc.manage_changeProperties(new_prop=new_prop)
----------

Upon invoking the above, I get:

Zope Error

Zope has encountered an error while publishing this resource.

Error Type: NameError
Error Value: global name 'new_prop' is not defined

Troubleshooting Suggestions

    * This resource may be trying to reference a nonexistent object or variable 
global name 'new_prop' is not defined.
    * The URL may be incorrect.
    * The parameters passed to this resource may be incorrect.
    * A resource that this resource relies on may be encountering an error.

For more detailed information about the error, please refer to the HTML source 
for this page.

If the error persists please contact the site maintainer. Thank you for your 
patience.

Traceback (innermost last):
  File /home/zope/Zope-2.4.4-src/lib/python/ZPublisher/Publish.py, line 223, in 
publish_module
  File /home/zope/Zope-2.4.4-src/lib/python/ZPublisher/Publish.py, line 187, in 
publish
  File /home/zope/Zope-2.4.4-src/lib/python/Zope/__init__.py, line 226, in 
zpublisher_exception_hook
    (Object: tmp)
  File /home/zope/Zope-2.4.4-src/lib/python/ZPublisher/Publish.py, line 171, in 
publish
  File /home/zope/Zope-2.4.4-src/lib/python/ZPublisher/mapply.py, line 160, in 
mapply
    (Object: editRecord)
  File /home/zope/Zope-2.4.4-src/lib/python/ZPublisher/Publish.py, line 112, in 
call_object
    (Object: editRecord)
  File /home/zope/Zope-2.4.4-src/lib/python/OFS/DTMLMethod.py, line 200, in 
__call__
    (Object: editRecord)
  File /home/zope/Zope-2.4.4-src/lib/python/DocumentTemplate/DT_String.py, line 
546, in __call__
    (Object: editRecord)
  File /home/zope/Zope-2.4.4-src/lib/python/DocumentTemplate/DT_Util.py, line 
231, in eval
    (Object: editRec(the_id, new_prop))
    (Info: editRec)
  File <string>, line 2, in f
NameError: (see above)


Either I'm not getting the right object (which I think I am), or I'm not 
providing the right parameters to manage_changeProperties.

Can someone shed a little light on this?  I've checked Google, and there are 
some nice examples when you are modifying values in a mySQL table, but nothing 
for when you are "hand" modifying properties in DTML Documents.  Incidentally, 
I think this would make a wonderful example for the Zope Book.  Hint, Hint.

Thanks in advance,

Ron