[Zope-dev] CopySupport bug

Casey Duncan cduncan@kaivo.com
Thu, 03 May 2001 15:13:26 -0600


There is a subtle bug in the CopySupport module that makes it impossible
to copy and paste a folder that contains a ZCatalog with CatalogAware
objects in indexed in the catalog also in that folder. The reason is as
follows, CopySupport calls a hookable method manage_afterClone (which is
hooked by CatalogAware). It does so after a copy is made of the object
but BEFORE the copy is mounted in the ZODB. 

manage_afterClone in CatalogAware tries to reindex the object, and in
doing so tries to derive its URL for use as the ZCatalog uid by calling
absolute_url on the object. This fails of course because the object as
yet has no URL because it is not mounted. The error reported is a
KeyError on SERVER_URL.

To make a long story somewhat shorter, I have a simple patch for this,
but there is still one more subtle bit of behavior to take note of:

When the ZCatalog is copied, all of its indexed data gets copied. Then
the new copies of the objects index themselves. This means that the
copied catalog has twice as many objects in it as the original. This
bugged me at first, but it makes sense and I don't see any obvious
solution that would be consistent.

For those interested, the patch is here:

http://classic.zope.org:8080/Collector/2205/view

-- 
| Casey Duncan
| Kaivo, Inc.
| cduncan@kaivo.com
`------------------>