[IMP] website: better error message (401, 404, 500)

bzr revid: chm@openerp.com-20130814151122-v1gw1l0wmg6c4vv8
This commit is contained in:
Christophe Matthieu 2013-08-14 17:11:22 +02:00
parent 30f643c641
commit 9449a20293
2 changed files with 51 additions and 2 deletions

View File

@ -382,6 +382,36 @@
</t>
</template>
<template id="500">
<t t-call="website.layout">
<div class="container">
<h1 class="mt32">500: Internal Server Error!</h1>
<pre t-esc="traceback"/>
</div>
</t>
</template>
<template id="401">
<t t-call="website.layout">
<div class="container">
<h1 class="mt32">401: Unauthorized Access!</h1>
<p>
The page you were looking for could not be
authorized.
</p><p>
Maybe you were looking for one of these
popular pages ?
</p>
<pre class="hidden" t-esc="error"/>
<ul>
<li><a href="/">Homepage</a></li>
<li><a href="/">Contact Us</a></li>
</ul>
</div>
</t>
</template>
<template id="contactus" name="Contact us">
<t t-call="website.layout">
<t t-set="title">Contact us - <t t-raw="res_company.name"/></t>

View File

@ -2,12 +2,16 @@
import simplejson
import openerp
from openerp.osv import osv
from openerp.osv import osv, orm
from openerp.addons.web import http
from openerp.addons.web.controllers import main
from openerp.addons.web.http import request
import urllib
import math
import traceback
import logging
logger = logging.getLogger(__name__)
def auth_method_public():
@ -68,7 +72,22 @@ class website(osv.osv):
context = {
'inherit_branding': values.get('editable', False),
}
return request.registry.get("ir.ui.view").render(request.cr, request.uid, template, values, context=context)
try:
return request.registry.get("ir.ui.view").render(request.cr, request.uid, template, values, context=context)
except (osv.except_osv, orm.except_orm), err:
logger.error(err)
values['error'] = err[1]
return self.render('website.401', values)
except ValueError:
logger.error("Website Rendering Error.\n\n%s" % (traceback.format_exc()))
return self.render('website.404', values)
except Exception:
logger.error("Website Rendering Error.\n\n%s" % (traceback.format_exc()))
if values['editable']:
values['traceback'] = traceback.format_exc()
return self.render('website.500', values)
else:
return self.render('website.404', values)
def pager(self, url, total, page=1, step=30, scope=5, url_args=None):
# Compute Pager