[Zope] Catalog reindexing in Python
Chris Crownhart
ccro@ifopen.com
Mon, 10 Apr 2000 11:51:54 -0600
Zopesters,
I am trying to make a python based class be Catalog Aware and be
reindexed when it is edited. I basically started with the Boring
Product How-To, and have turned it into a Company Product. The class
inherits from CatalogAware (someone somewhere said that CatalogAware had
to be the first base class). I create my Company instance in another
class by calling the constructor with no values, then immediately
calling the manage_edit method to update the data. Based on that, I am
trying to index the object in the constructor, and reindex the object in
the manage_edit. With the code below, the object gets indexed in the
catalog, but all the fields (indexes) are blank! The reindex_object
call is not working for some reason. (At least it is not updating the
field indexes like I would expect.)
The other gotcha is that I have named my catalog something other than
the default "Catalog". I believe the line,
self.default_catalog='YPCatalogForSorting' takes care of renaming it.
I have a feeling that I have a problem with Acquisition. It seems like
the constructor knows how to find the catalog, but the manage_edit does
not...
Thanks for any help,
Chris
class Company(
Products.ZCatalog.CatalogAwareness.CatalogAware, # Catalog Aware
OFS.SimpleItem.Item, # A simple Principia object. Not Folderish.
Persistent, # Make us persistent. Yaah!
Acquisition.Implicit, # Uh, whatever.
AccessControl.Role.RoleManager # Security manager.
):
.
.
.
def __init__(self, id, title='', REQUEST=None):
self.id = id
self.title = title
self.a_companyName=''
## This is for CatalogAware.
self.default_catalog='YPCatalogForSorting'
self.index_object()
.
.
.
def manage_edit(self, title, REQUEST='', a_companyName=''):
"""does this really need a doc string?"""
self.title = title
self.a_companyName = a_companyName
## This is for CatalogAware.
self.default_catalog='YPCatalogForSorting'
self.reindex_object()