[Zope-dev] exception hiding in _delObject

Florent Guillaume fg at nuxeo.com
Tue Nov 9 10:45:17 EST 2004


In _delObject and manage_beforeDelete there's a try/except that catches 
nearly everything (except BeforeDeleteException and the infamous 
ConflictError). It then proceeds to log a message, but continues:

     try:
         object.manage_beforeDelete(object, self)
     except BeforeDeleteException, ob:
         raise
     except ConflictError: # Added for CPS
         raise
     except:
         LOG('Zope',ERROR,'manage_beforeDelete() threw',
             error=sys.exc_info())
         pass

The rationale is, I guess, that when you delete an object you really 
want it gone.

This is IMO very harmful because it hides any bug in the catalog or the 
indexes (especially during unit tests where LOG is ignored). I've been 
(again) bitten by it.

I'd like to condition the pass to the fact that the current user is 
Manager. Otherwise I'd like it to fail (and reraise). So a Manager will 
still be able to delete objects when there's a bug, but not others.

Comments ?

Florent

-- 
Florent Guillaume, Nuxeo (Paris, France)   CTO, Director of R&D
+33 1 40 33 71 59   http://nuxeo.com   fg at nuxeo.com


More information about the Zope-Dev mailing list