[Zope] ZCatalog and custom Product
Milos Prudek
prudek at bvx.cz
Wed Apr 20 04:11:23 EDT 2005
Hi,
I need to convert a ZClass cataloged in multiple ZCatalogs into a
Product. I know how to create a Product. But I have trouble
understanding how to create a proper ZCatalog and manage it in a Product.
When I change my ZClass instance, it reindexes itself in multiple
ZCatalogs. I have the following DTML method "edit" in my ZClass (stored
in ZODB) that takes care of this:
<dtml-call "manage_editCataloger('Catalog_A')">
<dtml-call reindex_object>
<dtml-call "manage_editCataloger('Catalog_B')">
<dtml-call reindex_object>
How should this be programmed in Products?
- Should I first create a ZCatalog instance in ZODB, and then bind this
instance to my Product? That would make my Product not self-contained.
- or should the Product rather create ZCatalog instance during its
initialization? That would mean that upon Zope restart, ZCatalog
instance would be removed and re-created and all Product instances would
have to be recataloged.
In my new Product (that is to replace my ZClass), I put this line:
from Products.ZCatalog.ZCatalog import ZCatalog
and I added ZCatalog to the list of subclassed classes:
class ArtBase(ZCatalog, ObjectManager, SimpleItem, PropertyManager,
JMZPTMacros):
but I have no idea what to do next. In this mailing list's archive,
Chris Withers wrote that ZCatalog should be an attribute of a product's
instance so that I can open the ZCatalog management interface by calling
"my_prod_instance/catalog_name/manage". I understand that, but I have no
idea how to achieve it.
Should I add a line to my class __init__ ? Something like:
def __init__(self,id,title=''):
"""Contructor method to initialize the properties of our class"""
#Create and initilize the class attributes
self.id=id
self.title=title
self.catalog=manage_addZCatalog(id="catalog", title="title")
but the above looks fishy because I would have an isolated catalog for
each new instance of my class...
To support manage_editCataloger and reindex_object, do I need to import
both ZCatalog from Products.ZCatalog and CatalogAware from
Products.ZCatalog.CatalogAwareness ?
--
Milos Prudek
More information about the Zope
mailing list