[Twisted-web] Why not "remember" the clientHandle at the start of
	rendering?
    Mike C. Fletcher 
    mcfletch at rogers.com
       
    Thu Sep 15 16:59:23 MDT 2005
    
    
  
When rendering a LivePage, we have a method render_liveglue which, as a 
hidden side-effect, creates a client handle in self.clientFactory (then 
promptly forgets about it, making it difficult to reference).  Thing is, 
having that clientHandle available throughout the rendering process 
would be quite convenient, so why not create it in the renderHTTP method 
and remember it there for use by anything that's wanting access to it?
    def renderHTTP(self, ctx):
        """Override to store the client-handle in the main page context"""
        handle = self.clientFactory.newClientHandle(
            self, self.refreshInterval,self.targetTimeoutCount
        )
        ctx.remember( handle, IClientHandle )
        return super( LivePage, self ).renderHTTP( ctx )
    def render_liveglue(self, ctx, data):
        """Override to use already-created client handle (from 
renderHTTP)"""
        if not self.cacheable:
            handle = IClientHandle( ctx )
            handleId = "'", handle.handleId, "'"
        else:
            handleId = 'null'
        return [
            tags.script(type="text/javascript")[
                "var nevow_clientHandleId = ", handleId ,";"],
            tags.script(type="text/javascript",
                        src=url.here.child('nevow_glue.js'))
        ]
Noticed this as I was implementing the new handler implementation posted 
about a little while ago (it now works, incidentally, with a few bumps 
and twists).
Have fun,
Mike
-- 
________________________________________________
  Mike C. Fletcher
  Designer, VR Plumber, Coder
  http://www.vrplumber.com
  http://blog.vrplumber.com
    
    
More information about the Twisted-web
mailing list