FYI in CPS we use a simple backport of the before commit hook to ZODB 3.2: http://cvs.nuxeo.org/cgi-bin/viewcvs.cgi/CPS3/CPSCompat/PatchZODBTransaction.py?rev=1&view=markup
For now we use it to delay indexing of some objects to the end of the transaction (to avoid indexing twice the same object for instance): http://cvs.nuxeo.org/cgi-bin/viewcvs.cgi/CPS3/CPSCore/IndexationManager.py?rev=1&view=markup To index something, code just has to do: get_indexation_manager().push(ob) In get_indexation_manager() I have to check if there is already a registered IndexationManager hook with the transaction. I currently use a hack, but what I'd need is a way to query the registered hooks. What do people think of adding something like: def getBeforeCommitHooksImplementing(self, class_): """Get the registered beforeCommit hooks subclassing class_.""" return [(hook, args, kws) for hook, args, kws in self._before_commit if isintance(hook, class_)] (Interfaces could probably be a better choice than classes.) Or is it overengineering ? Maybe just a getBeforeCommitHooks that returns self._before_commit ? Florent -- Florent Guillaume, Nuxeo (Paris, France) CTO, Director of R&D +33 1 40 33 71 59 http://nuxeo.com [EMAIL PROTECTED] _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org http://mail.zope.org/mailman/listinfo/zodb-dev