[Zope] manipulating catalog brains directly?
Rob Miller
ra at burningman.com
Mon Apr 26 22:02:02 EDT 2004
hi,
i'm trying to migrate a group of CMFCollectors from a Zope-2.6.2,
Plone-1.0.5 site to a Zope-2.7, Plone-2.0 site. they're coming through
mostly okay, but the Collector Catalog shows up on the destination site
with 2 catalog entries for each issue, instead of just one.
this wouldn't be so bad, except that NONE of the catalog entries are
actually correct. one set of entries is mostly correct, except that
they contain the wrong path to the collector issues (the location of the
portal within the Zope site has changed). the other set of catalog
entries has the correct paths, but are lacking all of the OTHER
pertinent pieces of data, such as review_state, assigned_to, etc.
what i'm trying to do is to copy the information from the old catalog
entries to the ones with the correct path, so that i can run "catalog
update" to purge the old entries. in an external method i've got some
code like this:
def fixCollectorCatalog(self):
import string
catalog = self.get_internal_catalog()
oldbrain = catalog.search(query_request={'path':'/old/path',
'id':'42'})[0]
newbrain = catalog.search(query_request={'path':'/new/path',
'id':'42'})[0]
out = "%s: %s" % (newbrain.id, str(newbrain.assigned_to))
newbrain.assigned_to = ('testuser1', 'testuser2',)
out += '\n\n%s: %s' % (newbrain.id, str(newbrain.assigned_to))
return out
when i run this code, the output shows that the second access of
'newbrain.assigned_to' DOES actually contain the tuple that i hardcoded.
this only lasts for the duration of the current request, though; the
value returns to its original value on subsequent searches.
how do i make my edits stick? or is there some other way to bring my
catalog into sync with my collector's new location?
many thanks for any help,
-r
More information about the Zope
mailing list