El Wed, Jun 22, 2011 at 10:22:01AM +0200, Sergio Talens-Oliag va escriure: > El Tue, Jun 21, 2011 at 05:44:47PM -0700, Anthony va escriure: > > Another option might be to leave the name 'admin' and use routes.py to > > rewrite incoming and outgoing URLs to 'admin' using a different name. > > But for that to work all links to /admin should be generated using the URL > function, don't they? > > If that is the case I guess the only change needed would be the definition of > 'p.error_message_ticket' on the '_params_default' function included on the > 'gluon/rewrite.py' that will need to be redefined to get the right URL on the > error messages (a quick review shows that all the other modified files > generate the admin references using the URL function). > > I'll try it now and will send a patch if it works.
It does, here is what I've done: 1. I've reverted all the changes on the applications files 2. On my 'routes.py' I've added the following: # Move the admin application to web2py_admin routes_in = ( (r'/web2py_admin', r'/admin'), (r'/web2py_admin/(?P<any>.*)', r'/admin/\g<any>'), ) routes_out = ( (r'/admin', r'/web2py_admin'), (r'/admin/(?P<any>.*)', r'/web2py_admin/\g<any>'), ) 3. I've modified the 'web2py/gluon/rewrite.py' with the attached patch to apply the 'routes.py' to the 'thread.routes.error_message_ticket' setting. I do it on the 'load' function because I wanted to call 'url_out' function and doing it on the '_params_default' needed a lot of changes to the code and it is unnecesary in many cases (in fact with the attached patch if there is no global 'routes.py' file the 'url_out' function is never called from the 'load' function). I don't know if the patch is appropiate for inclusion on web2py, but at least it does not break old installations and makes things work as expected for a new user. Greetings, Sergio. -- Sergio Talens-Oliag <s...@iti.upv.es> <http://www.iti.upv.es/> Key fingerprint = FF77 A16B 9D09 FC7B 6656 CFAD 261D E19A 578A 36F2
--- web2py.orig/gluon/rewrite.py 2011-06-07 22:07:48.000000000 +0200 +++ web2py/gluon/rewrite.py 2011-06-22 12:04:46.677987688 +0200 @@ -66,6 +66,10 @@ p.routes_apps_raw = [] p.error_handler = None p.error_message = '<html><body><h1>%s</h1></body></html>' + # Note: + # p.error_message_ticket gets rewriten on the load function if there is + # a routes.py file on the server. Any change here it has to be applied + # on the other function too p.error_message_ticket = \ '<html><body><h1>Internal error</h1>Ticket issued: <a href="/admin/default/ticket/%(ticket)s" target="_blank">%(ticket)s</a></body><!-- this is junk text else IE does not display the page: '+('x'*512)+' //--></html>' p.routers = None @@ -255,6 +259,26 @@ if os.path.exists(abspath('applications', appname, routes)): load(routes, appname) + # Process the thread.routes.error_message_ticket with the loaded + # routes.py, just in case it gets rewritten on them + thread.routes.error_message_ticket = \ + '<html><body><h1>Internal error</h1>Ticket issued: <a href="' \ + + url_out( + request = None, + env = None, + application = 'admin', + controller = 'default', + function = 'ticket', + args = None, + other = '/%(ticket)s', + scheme = None, + host = None, + port = None + ) + '" target="_blank">%(ticket)s</a></body>' \ + + '<!-- this is junk text else IE does not display the page: ' \ + + ('x'*512) \ + + ' //--></html>' + if routers: load_routers(all_apps)