[Zope] Creating properties with a product.
Daniel Rusch
drusch@globalcrossing.com
Wed, 16 Aug 2000 13:20:58 -0500
Take a look at the doc string in the class definition of PropertyManager. It states that:
An object may specify that it has one or more predefined
properties, by specifying an _properties structure in its
class::
_properties=({'id':'title', 'type': 'string', 'mode': 'w'},
{'id':'color', 'type': 'string', 'mode': 'w'},
)
The _properties structure is a sequence of dictionaries, where
each dictionary represents a predefined property. Note that if a
predefined property is defined in the _properties structure, you
must provide an attribute with that name in your class or instance
that contains the default value of the predefined property.
Also take a look at some of the other products out there that have properties and you will see how they handle them. Don't forget to update any properties you have added in your manage_edit member function for example: self._updateProperty('cool',cool)
Hope this helps,
DR
jesse wrote:
> Hello, I recently created a product which adds a folder, with multiple dtmldocuments inside of it, effectivly creating a site immedatly. However, even though I can add folders and documents easiliy, I can't seem to create properties!
> It keeps giving me the Attribute error: aq_base.
> Here is the code for the function that does the work:
>
> def manage_addMemberSite(self, id, title='',REQUEST=None):
> """Add a MemberSite folder."""
>
> try: user=REQUEST['AUTHENTICATED_USER']
> except: user=None
>
> folder = MemberSite(id, title)
> # _setObject must be the Zope hook that actually stores this instance in
> # the ZODB
> self._setObject(id, folder)
>
> folder.manage_addFolder(id='Images', title='')
> folder.manage_addDTMLDocument(id='index_html', title='', file=index_body)
> folder.manage_addDTMLDocument(id='navbar', title='', file=navbar_html)
> folder.manage_addDTMLDocument(id='content', title='enter page content here', file=default_dd_html)
>
> folder.manage_addProperty(id='nav_color', value='#483D8B', type='string')
> folder.manage_addProperty(id='content_color', value='#F0E68C', type='string')
> folder.manage_addProperty(id='background_color', value='#FFFFFF', type='string')
>
> if REQUEST:
> return self.manage_main(self, REQUEST, update_menu=1)
>
> The folder.manage_addProperty(id etc etc) does not work. I have been looking all over, have looked to where the error seems to stem from, (the valid_property_id function in the PropertyManager.py) but I can't seem to find out whats wrong. Does anyone have any ideas?
>
> Please respond ASAP.
>
> _______________________________________________
> Zope maillist - Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> ** No cross posts or HTML encoding! **
> (Related lists -
> http://lists.zope.org/mailman/listinfo/zope-announce
> http://lists.zope.org/mailman/listinfo/zope-dev )