[Zope-dev] __after_publishing_traverse__
   
    Shane Hathaway
     
    shane@zope.com
       
    Mon, 15 Apr 2002 11:16:25 -0400
    
    
  
Ivo van der Wijk wrote:
> Hi All,
> 
> I would like to do some bookkeeping *after* an object has been published,
> i.e. imagine a request is done for:
> 
> /a/b/c/d
> 
> 'b' is the (folderish) object that does the accounting, 'd' is the object
> to be published. I would like 'b' to examine the RESPONSE after publishing.
> 
> I know there's a __before_publishing_traverse__, however, this is not what
> I want.
> 
> Does someone know a way to implement this cleanly? I.e. without monkeypatching
> 'd' (which can be any kind of zope object)?
REQUEST._hold() is designed for this purpose.  _hold() accepts an object 
which will be deleted when the request is finished.  Add an object with 
a __del__() method that calls your application logic.  In fact, this is 
the mechanism Zope uses to make sure the database connection gets 
closed.  (see ZODB/ZApplication.py.)
Shane