Am 05.01.2010 16:38 schrieb Yo'av Moshe:
I got this code in my controllers/root.py:

     def _cp_on_http_error(self, status, message):
         print int(status)
         if int(status)==404:
             raise redirect("/one")
         else:
             raise redirect("/two")

As you can probably guess, what I want is that 404 errors will
redirect to one page and all other error will redirect to another. But
it won't work...

I guess the problem is that raising a redirect exception will call _cp_on_http_error() recursively and (only) an internal error will break that recursion. So instead of raising an exception, I suggest you just call it to modify the response. Also, you should call the default _cp_on_http_error() function in your own function. Like this:

    def _cp_on_http_error(self, status, message):
        cherrypy._cputil._cp_on_http_error(status, message)
        url = "/one" if int(status) == 404 else "/two"
        redirect = cherrypy.HTTPRedirect(url)
        redirect.set_response()

-- Christoph
-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.


Reply via email to