James Y Knight wrote:
Refactor urlToChild API to avoid passing superfluous data (#1 from issue 121). I believe this change is wrong: prePathURL() changes. setupSession has to use the prePathURL in place when guard's locateChild() is called, not the one in place at the time some other resource calls setupSession().
In theory, I believe you are right (and that particular patch can easily be reverted without really affecting rest of the issue, it was cleanup-only). In practise, is request.setupSession really wanted? Noone seems to be calling it, and commenting out the two lines that set it causes no unit tests to fail. I formally request you write unit tests for it if you want to keep it. If you can write a test that fails due to changing prePathURL, I'll happily make it work again. [0 tv@tao ~/src/nevow/upstream]$ grapple setupSession nevow/guard.py:186: request.setupSession = lambda : self.createSession(request, segments=[]) nevow/guard.py:200: request.setupSession = lambda : self.createSession(request, segments) nevow/context.py:329:toSetOnRequest = ['args', 'content', 'fields', 'isSecure', 'method', 'path', 'postpath', 'prepath', 'receieved_headers', 'setupSession', 'session', 'uri'] examples/userdb.tac:312: def setupSession(self, ctx): examples/userdb.tac:318: self.setupSession(ctx) examples/userdb.tac:322: self.setupSession(ctx) # matches: 6 # matching-files: 3 [0 tv@tao ~/src/nevow/upstream]$ The examples/userdb.tac seems to be an unrelated function that just happens to have the same name. [0 tv@tao ~/src/twisted/stable]$ grapple setupSession twisted/web/woven/guard.py:207: request.setupSessionURL = setupURL twisted/web/woven/guard.py:208: request.setupSession = lambda: Redirect(setupURL) twisted/web/woven/guard.py:316: return request.setupSession() twisted/web/woven/guard.py:417: return request.setupSession() # matches: 4 # matching-files: 1 [0 tv@tao ~/src/twisted/stable]$ So woven calls it. Whoppee. I see no reason for nevow guard to try to be compatible with woven guard.