I've succesfully gotten the catalog to work (thanks everyone!), but in
doing so, I've created a problem. Squishdot uses this code like this in
order to add an item:
id=self.createId() # make a datestamp id
msg=PromoterPost(id,title)
msg=msg.__of__(self) # ???
self.setItem(id,msg) # set the item
This code is incompatible with the catalog. As far as I can tell because
The catalog likes to see id's as strings, but I don't think the object gets
completely added to the zope fs either. After changing the code that does
the adding to the zope fs everything related to the catalog seems good.
Here's the new code:
ob=PromoterPost(id,title)
ob.id = id
ob.title = title
self._setObject(id,ob)
self.getCatalog().catalog_object(ob,id)
So here's the problem, the methods that squishdot uses to locate
sub-objects relies on a BTree() type method, called "data", and is used by
a few methods like this:
def objectValues(self):
""" return list of subobjects """
return map(lambda x, p=self: x.__of__(p), self.data.map(self.ids))
or
def is_local_user(self, thisuser):
""" returns true with ID if user is a local user
based on rev_id_list in squishdot
"""
rlist = map(None,self.ids)
rlist = filter(lambda x,p=self : p.data[x].validated, rlist)
rlist = filter(lambda x,p=self : p.data[x].meta_type ==
'SRPersonPost', rlist)
rlist = filter(lambda x,p=self,s=thisuser : p.data[x].title == s,
rlist)
return rlist
Neither return any results, becuase in the new code, the data object is
not getting updated. Do I need to keep a record of all the ids like
squishdot does, or can I leave that up to zope?
It seems like there should be an easier way than "self.data" to do this...
Any ideas?
_______________________________________________
Zope maillist - [EMAIL PROTECTED]
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 )