[IMP] website: traceback, node, message in page 500
authorChristophe Matthieu <chm@openerp.com>
Fri, 18 Oct 2013 11:41:16 +0000 (13:41 +0200)
committerChristophe Matthieu <chm@openerp.com>
Fri, 18 Oct 2013 11:41:16 +0000 (13:41 +0200)
bzr revid: chm@openerp.com-20131018114116-ywe7pp49f2cb0dor

addons/website/models/website.py
addons/website/views/website_templates.xml

index 56cbfbd..c79ada6 100644 (file)
@@ -14,6 +14,7 @@ import traceback
 from openerp.tools.safe_eval import safe_eval
 from openerp.exceptions import AccessError, AccessDenied
 import werkzeug
+from openerp.addons.base.ir.ir_qweb import QWebException
 
 import logging
 logger = logging.getLogger(__name__)
@@ -197,6 +198,16 @@ class website(osv.osv):
             qweb_context['error'] = err[1]
             logger.warn("Website Rendering Error.\n\n%s" % traceback.format_exc())
             return self.render(cr, uid, ids, 'website.401', qweb_context)
+        except (QWebException,), err:
+            qweb_context['traceback'] = traceback.format_exc()
+            qweb_context['template'] = err.template
+            qweb_context['message'] = err.message
+            qweb_context['node'] = err.node and err.node.toxml()
+            logger.error("Website Rendering Error.\n%(message)s\n%(node)s\n\n%(traceback)s" % qweb_context)
+            return view.render(
+                cr, uid,
+                'website.500' if qweb_context['editable'] else 'website.404',
+                qweb_context, context=context)
         except Exception:
             logger.exception("Website Rendering Error.")
             qweb_context['traceback'] = traceback.format_exc()
index 7702e63..48b2416 100644 (file)
                     <div class="oe_structure">
                         <h1 class="container mt32">500: Internal Server Error!</h1>
                     </div>
-                    <pre t-if="editable" t-esc="traceback"/>
+                    <t t-if="editable">
+                        <h3>An exception appear in the template: <span id="exception_template" t-esc="template"/></h3>
+                        <b id="exception_message" t-esc="message"/>
+                        <pre id="exception_node" t-esc="node"/>
+                        <pre id="exception_traceback" t-esc="traceback"/>
+                    </t>
                 </div>
             </t>
         </template>