diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 4038965ae49..33f2105c35f 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -52,7 +52,17 @@ def route(routes, *route_args, **route_kwargs): request.website.preprocess_request(request) if f.methods and request.httprequest.method not in f.methods: return werkzeug.exceptions.MethodNotAllowed(valid_methods=f.methods) - return f(*args, **kwargs) + try: + return f(*args, **kwargs) + except Exception, err: + logger.exception("Website Rendering Error.") + if request.context['is_public_user']: + return request.website.render("website.401") + else: + return request.website.render("website.500", { + 'traceback': traceback.format_exc(), + 'controller': [f.__module__, "%s.%s" % (args[0].__class__.__name__, f.__name__)], + }) return wrap return decorator diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index cfa86e78819..6da845f2bd8 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -398,9 +398,10 @@

500: Internal Server Error!

-

Exception in template:

+

Exception in template:

+

Exception in controller: (Module: )

Expression:

-
+                        

                         
                     
                 
@@ -415,11 +416,14 @@
                     

The page you were looking for could not be authorized. -

+

+ +
+                    
+                    

Maybe you were looking for one of these popular pages ?

-