[Zope] ZClass autofilling parent ZClass properties?

Dan Pierson dan@remote.control.com
Wed, 6 Oct 1999 18:49:04 -0400


I'm trying to create a ZClass that inherits from another ZClass and
automatically generates some of the creation properties for the parent,
including 'id'.  When I try to create a instance of the child, I get:

	Error Type: KeyError
	Error Value: id

Here's the interesting part of the add method:

<dtml-call "REQUEST.set('id',
_.string.translate(_.string.lower(REQUEST['title']), 
                              _.string.maketrans(' ', '_')))">
<dtml-call "REQUEST.set('location_type', 'url')">
<dtml-call "REQUEST.set('item_type', 'link')">
<dtml-call "REQUEST.set('format', 'html')">

<dtml-with "SiteLinkClass.createInObjectManager(REQUEST['id'],
REQUEST)">

From the traceback below and various attempts to hack around the error
it looks to me like Zope is using my REQUEST object to try an create the
parent (SiteItemClass) before it tries to create the child
(SiteLinkClass).  Is this the case?  If so, is it impossible for me to
generate the new id this way?

With this sort of traceback:

Traceback (innermost last):
  File /home/zope/lib/python/ZPublisher/Publish.py, line 214, in
publish_module
  File /home/zope/lib/python/ZPublisher/Publish.py, line 179, in publish
  File /home/zope/lib/python/Zope/__init__.py, line 201, in
zpublisher_exception_hook
    (Object: RoleManager)
  File /home/zope/lib/python/ZPublisher/Publish.py, line 165, in publish
  File /home/zope/lib/python/ZPublisher/mapply.py, line 160, in mapply
    (Object: SiteItemClass_add)
  File /home/zope/lib/python/ZPublisher/Publish.py, line 102, in
call_object
    (Object: SiteItemClass_add)
  File /home/zope/lib/python/OFS/DTMLMethod.py, line 145, in __call__
    (Object: SiteItemClass_add)
  File /home/zope/lib/python/DocumentTemplate/DT_String.py, line 502, in
__call__
    (Object: SiteItemClass_add)
  File /home/zope/lib/python/DocumentTemplate/DT_With.py, line 133, in
render
    (Object: SiteItemClass.createInObjectManager(REQUEST['id'],
REQUEST))
  File /home/zope/lib/python/DocumentTemplate/DT_Util.py, line 321, in
eval
    (Object: SiteItemClass.createInObjectManager(REQUEST['id'],
REQUEST))
  File &lt;string&gt;, line 0, in ?
  File /home/zope/lib/python/DocumentTemplate/DT_Util.py, line 156, in
careful_getitem
  File /home/zope/lib/python/ZPublisher/HTTPRequest.py, line 758, in
__getitem__
KeyError: (see above)