[Zope] ZCatalog problem!
Kapil Thangavelu
kthangavelu@earthlink.net
Sun, 03 Sep 2000 11:47:10 -0700
Kevin Howe wrote:
>
> Hi, I have a Folderish class (FClass) and I am trying to write it so that
> when an FClass object is added in ZOPE, it will automatically create a
> ZCatalog object inside itself. I attempted to do this in the manner I had
> successfully done this before with other object types:
>
> # handle represents the new object to be added with self,_setObject(id,
> handle)
> handle.manage_addZCatalog('CatName', 'CatTitle, None)
generally i reserve this type of stuff into the __init__ method of the
object... hence i don't clutter up my manage_add method with code thats
not directly relevant to its function.
anyways, such is mainly a style matter..
to answer your question...
here is a method i call from my __init__ method of a python product.
def setup_catalog(self):
''' setups catalog for searching news channels '''
id = 'news_catalog'
catalog = Products.ZCatalog.ZCatalog.ZCatalog(id)
self._setObject(id, catalog)
# setup indexes and such
self.news_catalog.manage_addColumn('description')
self.news_catalog.manage_addColumn('Date')
self.news_catalog.manage_addIndex('Date', 'FieldIndex')
self.news_catalog.manage_addColumn('ChannelName')
self.news_catalog.manage_addIndex('ChannelName', 'FieldIndex')
self.news_catalog.manage_addColumn('link')
self.news_catalog.manage_addIndex('link', 'FieldIndex')
self.news_catalog.manage_addIndex('SearchableText', 'TextIndex')
# get rid of defaults
self.news_catalog.manage_delColumns(['bobobase_modification_time',
'summary'])
self.news_catalog.manage_delIndexes(['bobobase_modification_time',
'PrincipiaSearchSource'])
return 1
you can also do it from a dtml-method.
i'd don't have the exact syntax handy...
but i'll take a stab at it
> But this doesn't work. I then did some testing with DTML using the following
> method inside a Folder:
>
> <dtml-call " manage_addFolder('FolderName') ">
> <dtml-call " manage_addImage('ImageName', '') ">
> <dtml-call " manage_addZCatalog('CatName', 'CatTitle', _.None) ">
>
> The new Folder and new Image were both added with no problems. This was what
> I expected since the "manage_addFolder" and "manage_addZCatalog" methods are
> inherited from OFS.Folder.Folder. The method "manage_addZCatalog" however,
> doesn't seem to have been inherited for some reason.
the Folder, Image, Document, Method manage_adds are globally available
methods... to add a product you need
see the howto on adding zclasses programamtically for examples/more
info.
if i remember correctly the syntax is something like
<dtml-with "Control_Panel.Products['ZCatalog']">
<dtml-call "manage_addZCatalog('foo', 'bar', _.None)">
</dtml-with>
but i would check that...
Cheers
Kapil