On Mon, Apr 15, 2002 at 09:39:47AM -0600, Casey Duncan wrote: > The request object has a hold area which keeps objects alive as long as > the request lives. Although I have not tried it, you might be able to > add an object to this hold area using __bobo_traverse__ defined on B. > > This object's class would need to have a destructor method (__del__) > defined so that it can do something when the request is over and the > response has presumably been written. > > you could code that something like this: > > In b's class: > > class b: > ... > def __bobo_traverse__(self, name): > self.REQUEST._hold(ResponseChecker(self.REQUEST.RESPONSE)) > > class ResponseChecker: > def __init__(self, response): > self.response = response > > def __del__(self): > ...do something with self.response... > > Like I said, I've never tried this, but you never know, it might work. > If not, another option would be to have b use __bobo_traverse__ to > dynamically add a destructor to the RESPONSE object (it doesn't already > have one AFAIK). Like this: >
This indeed does work. The only difference is that I'm installing the hook in __before_publishing_traverse__, so I don't have to do any traversal myself. I find it a scary solution though (though not as scary as monkeypatching __del__), so I'm not 100% sure if I will use this code, or perhaps I'll make it very optional (basically, thanks to this nice hack, QuotaFolder can do traffic accounting as well :) Cheers, Ivo -- Drs. I.R. van der Wijk -=- Brouwersgracht 132 Amaze Internet Services V.O.F. 1013 HA Amsterdam, NL -=- Tel: +31-20-4688336 Linux/Web/Zope/SQL/MMBase Fax: +31-20-4688337 Network Solutions Web: http://www.amaze.nl/ Consultancy Email: [EMAIL PROTECTED] -=- _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )