[Zope] Re: manipulating catalog brains directly?

Rob Miller ra at burningman.com
Tue Apr 27 20:09:23 EDT 2004


Ausum Studio wrote:

> I would re-catalog all the collector's objects manually (using
> catalog_object), traversing folders if necessary. Then I would perform a
> catalog update.

a nice idea, but digging more deeply i learned that what was actually 
getting lost in the transition was the association between the collector 
issues and the collector_issue_workflow.  the issues were getting 
cataloged correctly, but workflow related data was no longer valid.

kapil pointed me in the right direction by suggesting that the workflow 
status of the issues were probably being reinitialized in the 
manage_afterAdd method upon import.  if i comment out a few lines from 
this method while doing the import, then everything works out.  i still 
need to run the catalog update to get rid of the duplicates, but after 
that everything works as needed.  :-).

-r


> 
> Ausum
> 
> 
> ----- Original Message ----- 
> From: "Rob Miller" <ra at burningman.com>
> To: <zope at zope.org>
> Sent: Monday, April 26, 2004 9:02 PM
> Subject: [Zope] manipulating catalog brains directly?
> 
> 
> 
>>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