not pretty I guess, but it does what I want. is there any chance to a similar/better solution in a next version of web2py ?
On 26 mai, 23:23, desfrenes <desfre...@gmail.com> wrote: > okay, so here it is. > > in routes.py: > use_error_controller = True > > in main.py (line 218): > > # ################################################## > # access the requested application > # ################################################## > > if not os.path.exists(request.folder): > if request.application=='init': > request.application = 'welcome' > redirect(html.URL(r=request)) > use_error_controller = rewriteSymbols.get('use_error_controller', > None) > if use_error_controller == True: > request.application = 'error' > request.controller = 'default' > request.function = 'index' > request.folder = os.path.join(request.env.web2py_path, > 'applications', > request.application) + '/' > else: > raise HTTP(400, error_message, > web2py_error='invalid application') > > and then in error/default/index I can query the database for content > where url=request.path_info > > On 26 mai, 22:45, desfrenes <desfre...@gmail.com> wrote: > > > In other words, the question would be "how do I intercept 400+ errors > > before the reponse is sent to the browser". > > > Diggin' web2py's code (main.py, line 226) I found an possible way to > > do it: > > > # ################################################## > > # access the requested application > > # ################################################## > > > if not os.path.exists(request.folder): > > if request.application=='init': > > request.application = 'welcome' > > redirect(html.URL(r=request)) > > > # > > # No url match so, if set in config (routes.py?), > > # call special controller/method handler here (error/error). > > # > > # [call method here] > > # > > # If not set, go on with standard error http error: > > # > > > raise HTTP(400, error_message, > > web2py_error='invalid application') > > > I lack in-depth knowledge of web2py's internals but I'll try to > > implement this and send a patch. > > > - > > > On 26 mai, 21:57, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > Not sure I completely understand the issue but as long as it is ok > > > with you fine. > > > > On May 26, 2:32 pm, desfrenes <desfre...@gmail.com> wrote: > > > > > Thanks. > > > > > I first played with routes_onerror but it was useless for me since it > > > > affects only redirection (I needed to trap the error *before* > > > > redirection occurs). > > > > > Then I found this > > > > thread:http://groups.google.com/group/web2py/browse_thread/thread/95910208a4... > > > > > Using a regexp to map .html urls to a controller is ok and I will > > > > probably use that, but it means the url still has to have ".html" in > > > > it, thus not reaching the goal of having a complete arbitrary url. But > > > > it's ok though. > > > > > On 26 mai, 08:17, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > > There may be an easier to implement Djangoflatpagesin web2py but if > > > > > you need to trap error codes, look into > > > > > > web2py/routes.examples.py > > > > > > Massimo > > > > > > On May 26, 12:51 am, desfrenes <desfre...@gmail.com> wrote: > > > > > > > Hello, > > > > > > > I'm trying to build something similar to the flatpage application in > > > > > > django, that is an app that maps a simple content to an arbitrary > > > > > > url. > > > > > > To do so I have to trap 400 and 404 errors and then see if a content > > > > > > is attached to this url. If so, display it, if not, raise the error > > > > > > again. > > > > > > > How can I trap 400 and 404 errors ? > > > > > > > Cheers > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---