[REV] Bring back QWebExceptions
authorFabien Meghazi <fme@openerp.com>
Fri, 31 Jan 2014 11:36:11 +0000 (12:36 +0100)
committerFabien Meghazi <fme@openerp.com>
Fri, 31 Jan 2014 11:36:11 +0000 (12:36 +0100)
bzr revid: fme@openerp.com-20140131113611-wee3xvnvzw9smq2r

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

index 4838e65..6948f10 100644 (file)
@@ -103,20 +103,16 @@ class ir_http(orm.AbstractModel):
                 traceback=traceback.format_exc(exception),
             )
             if exception:
-                current_exception = exception
+                code = getattr(exception, 'code', code)
                 if isinstance(exception, ir_qweb.QWebException):
                     values.update(qweb_exception=exception)
-                    if exception.inner:
-                        current_exception = exception.inner
-                if isinstance(current_exception, openerp.exceptions.AccessError):
-                    code = 403
-                else:
-                    code = getattr(exception, 'code', code)
+                    if isinstance(exception.qweb.get('cause'), openerp.exceptions.AccessError):
+                        code = 403
             if code == 500:
                 logger.error("500 Internal Server Error:\n\n%s", values['traceback'])
-                if values.get('qweb_exception'):
+                if 'qweb_exception' in values:
                     view = request.registry.get("ir.ui.view")
-                    views = view._views_get(request.cr, request.uid, values['qweb_exception'].template, request.context)
+                    views = view._views_get(request.cr, request.uid, exception.qweb['template'], request.context)
                     to_reset = [v for v in views if v.model_data_id.noupdate is True]
                     values['views'] = to_reset
             elif code == 403:
@@ -132,7 +128,7 @@ class ir_http(orm.AbstractModel):
 
             try:
                 html = request.website._render('website.%s' % code, values)
-            except:
+            except Exception:
                 html = request.website._render('website.http_error', values)
             return werkzeug.wrappers.Response(html, status=code, content_type='text/html;charset=utf-8')
 
index e34d1e5..c288dba 100644 (file)
             <div id="error_main" class="panel-collapse collapse in">
                 <div class="panel-body">
                     <p t-if="website_controller">The following error was raised in the website controller <code t-esc="website_controller"/></p>
-                    <p><strong>Error message:</strong> <pre t-esc="exception.message"/></p>
+                    <p>
+                        <strong>Error message:</strong>
+                        <pre t-esc="exception.message"/>
+                    </p>
                 </div>
             </div>
         </div>
             </div>
             <div id="error_qweb" class="panel-collapse collapse">
                 <div class="panel-body">
+                    <p t-if="exception.qweb.get('message')">
+                        <strong>Error message:</strong>
+                        <pre t-esc="exception.qweb.get('message')"/>
+                    </p>
                     <p>
-                        The error occured while rendering the template <code t-esc="qweb_exception.template"/>
-                        <t t-if="qweb_exception.expression">and evaluating the following expression: <code t-esc="qweb_exception.expression"/></t>
+                        The error occured while rendering the template <code t-esc="qweb_exception.qweb.get('template')"/>
+                        <t t-if="'expression' in qweb_exception.qweb">and evaluating the following expression: <code t-esc="qweb_exception.qweb['expression']"/></t>
                     </p>
-                    <t t-if="qweb_exception.node">
-                        <pre id="exception_node" t-esc="qweb_exception.node.toxml()"/>
+                    <t t-if="'node' in qweb_exception.qweb">
+                        <pre id="exception_node" t-esc="qweb_exception.qweb['node'].toxml()"/>
                     </t>
                 </div>
             </div>
                     <div class="container" t-if="views">
                         <div class="alert alert-danger" t-if="qweb_exception and editable">
                             <h4>Template fallback</h4>
-                            <p>An error occured while rendering the template <code t-esc="qweb_exception.template"/>.</p>
+                            <p>An error occured while rendering the template <code t-esc="qweb_exception.qweb['template']"/>.</p>
                             <p>If this error is caused by a change of yours in the templates, you have the possibility to reset one or more templates to their <strong>factory settings</strong>.</p>
                             <form action="/website/reset_templates" method="post">
                                 <ul class="oe_template_fallback">