[FIX] website: catch and dispatch error for rendering
bzr revid: chm@openerp.com-20130826101615-t1ouij4flhtdthxe
This commit is contained in:
parent
04f97cf6e3
commit
667d96ff0c
|
@ -292,7 +292,7 @@
|
|||
<t t-call="website.layout">
|
||||
<div class="container">
|
||||
<h1 class="mt32">500: Internal Server Error!</h1>
|
||||
<pre t-esc="traceback"/>
|
||||
<pre t-if="editable" t-esc="traceback"/>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
@ -308,7 +308,7 @@
|
|||
Maybe you were looking for one of these
|
||||
popular pages ?
|
||||
</p>
|
||||
<pre class="hidden" t-esc="error"/>
|
||||
<pre t-if="editable" t-esc="error"/>
|
||||
<ul>
|
||||
<li><a href="/">Homepage</a></li>
|
||||
<li><a href="/">Contact Us</a></li>
|
||||
|
|
|
@ -10,6 +10,7 @@ import urllib
|
|||
import math
|
||||
import traceback
|
||||
from openerp.tools.safe_eval import safe_eval
|
||||
from openerp.exceptions import AccessError, AccessDenied
|
||||
|
||||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -72,25 +73,36 @@ class website(osv.osv):
|
|||
values.update(additional_values)
|
||||
return values
|
||||
|
||||
def render(self, template, values={}):
|
||||
def render(self, template, values=None):
|
||||
view = request.registry.get("ir.ui.view")
|
||||
IMD = request.registry.get("ir.model.data")
|
||||
|
||||
if not values:
|
||||
values = {}
|
||||
context = {
|
||||
'inherit_branding': values.get('editable', False),
|
||||
}
|
||||
|
||||
# check if xmlid of the template exists
|
||||
try:
|
||||
model, xmlid = template.split('.')
|
||||
model, id = IMD.get_object_reference(request.cr, request.uid, model, xmlid)
|
||||
except ValueError:
|
||||
logger.error("Website Rendering Error.\n\n%s" % traceback.format_exc())
|
||||
return self.render('website.404', values)
|
||||
|
||||
# render template and catch error
|
||||
try:
|
||||
return 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 (AccessError, AccessDenied), err:
|
||||
logger.error(err)
|
||||
values['error'] = err[1]
|
||||
logger.warn("Website Rendering Error.\n\n%s" % traceback.format_exc())
|
||||
return self.render('website.401', values)
|
||||
except Exception:
|
||||
trace = traceback.format_exc()
|
||||
logger.error("Website Rendering Error.\n\n%s" % trace)
|
||||
values['traceback'] = traceback.format_exc()
|
||||
logger.error("Website Rendering Error.\n\n%s" % values['traceback'])
|
||||
if values['editable']:
|
||||
values['traceback'] = trace
|
||||
return view.render(request.cr, request.uid, 'website.500', values, context=context)
|
||||
else:
|
||||
return view.render(request.cr, request.uid, 'website.404', values, context=context)
|
||||
|
|
|
@ -32,7 +32,7 @@ class website_contract(http.Controller):
|
|||
|
||||
step = 20
|
||||
pager = website.pager(url="/references/", total=len(partner_ids), page=page, step=step, scope=7, url_args=post)
|
||||
partner_ids = partner_obj.search(request.cr, request.uid, [('id', 'in', partner_ids)], limit=step, offset=pager['offset'])
|
||||
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('id', 'in', partner_ids)], limit=step, offset=pager['offset'])
|
||||
|
||||
values = website.get_rendering_context({
|
||||
'partner_ids': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids),
|
||||
|
@ -45,8 +45,9 @@ class website_contract(http.Controller):
|
|||
def references_ref(self, ref_id=0, **post):
|
||||
website = request.registry['website']
|
||||
partner_obj = request.registry['res.partner']
|
||||
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)])
|
||||
values = website.get_rendering_context({
|
||||
'partner_id': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, ref_id, context={'show_address': True}),
|
||||
'partner_id': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids[0], context={'show_address': True}),
|
||||
})
|
||||
return website.render("website_contract.details", values)
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
<div class="media-body">
|
||||
<t t-call="website.publish"><t t-set="object" t-value="partner"/></t>
|
||||
<a class="media-heading" t-attf-href="/references/#{ partner.id }/"><small t-field="partner.parent_id"/> <small t-field="partner.name"/></a>
|
||||
<div t-field="partner.website_sort_description"/>
|
||||
<div t-field="partner.website_short_description"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -7,7 +7,7 @@ class res_partner(osv.osv):
|
|||
_columns = {
|
||||
'website_published': fields.boolean('Available in the website'),
|
||||
'website_description': fields.html('Description for the website'),
|
||||
'website_sort_description': fields.text('Sort description for the website'),
|
||||
'website_short_description': fields.text('Sort description for the website'),
|
||||
}
|
||||
|
||||
def img(self, cr, uid, ids, field='image_small', context=None):
|
||||
|
|
Loading…
Reference in New Issue