On Wed, 21 Feb 2007 11:19:41 +0100, Manlio Perillo <[EMAIL PROTECTED]> wrote:
Just forget it!I have a personalized locateChild in the base class, where I do: def locateChild(self, ctx, segments): request = inevow.IRequest(ctx) if request.args.get('login-failure'): import login return login.Login(self.avatar, failure=True), '' res = rend.Page.locateChild(self, ctx, segments) if res == rend.NotFound: return NotFound(self.avatar), '' return rend.Page.locateChild(self, ctx, segments) # <===
This code is wrong in 2 ways: 1) locateChild can return deferreds, you are not covering this aspect. 2) Why calling locateChild twice when once is enough? if the page is not rend.NotFound then it's the page you want... just return it.
By the way, is this code the best way to handle a login failure?
Can't spot anything terribly wrong there.
Moreover, I still do not understand why, when replacing macro with render, locateChild is called 3 times, instead of 2.
You probably have other confusions in your source. As I said there's no link _at all_ between rendering and child locating. _______________________________________________ Twisted-web mailing list [email protected] http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
