Merge lp:~openerp-dev/openerp-web/saas-1-notb-chs into lp:~openerp/openerp-web/saas-1

Proposed by Christophe Simonis (OpenERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openerp-web/saas-1-notb-chs
Merge into: lp:~openerp/openerp-web/saas-1
Diff against target: 95 lines (+27/-21)
2 files modified
addons/web/http.py (+23/-19)
addons/web/static/src/xml/base.xml (+4/-2)
To merge this branch: bzr merge lp:~openerp-dev/openerp-web/saas-1-notb-chs
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+169256@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

3739. By Christophe Simonis (OpenERP)

[FIX] web: do not show traceback when not in debug mode

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'addons/web/http.py'
2--- addons/web/http.py 2013-06-11 15:52:51 +0000
3+++ addons/web/http.py 2013-06-13 16:55:55 +0000
4@@ -125,6 +125,26 @@
5 with registry.cursor() as cr:
6 yield (registry, cr)
7
8+ def _serialize_exception(self, e):
9+ t = type(e)
10+ tmp = {
11+ "name": t.__module__ + "." + t.__name__ if t.__module__ else t.__name__,
12+ "message": openerp.tools.exception_to_unicode(e),
13+ "arguments": to_jsonable(e.args),
14+ }
15+ if self.debug:
16+ tmp['debug'] = traceback.format_exc()
17+
18+ if isinstance(e, openerp.osv.osv.except_osv):
19+ tmp["exception_type"] = "except_osv"
20+ elif isinstance(e, openerp.exceptions.Warning):
21+ tmp["exception_type"] = "warning"
22+ elif isinstance(e, openerp.exceptions.AccessError):
23+ tmp["exception_type"] = "access_error"
24+ elif isinstance(e, openerp.exceptions.AccessDenied):
25+ tmp["exception_type"] = "access_denied"
26+ return tmp
27+
28 def reject_nonliteral(dct):
29 if '__ref' in dct:
30 raise ValueError(
31@@ -209,14 +229,14 @@
32 response['id'] = self.jsonrequest.get('id')
33 response["result"] = method(self, **self.params)
34 except session.AuthenticationError, e:
35- se = serialize_exception(e)
36+ se = self._serialize_exception(e)
37 error = {
38 'code': 100,
39 'message': "OpenERP Session Invalid",
40 'data': se
41 }
42 except Exception, e:
43- se = serialize_exception(e)
44+ se = self._serialize_exception(e)
45 error = {
46 'code': 200,
47 'message': "OpenERP Server Error",
48@@ -242,22 +262,6 @@
49 r = werkzeug.wrappers.Response(body, headers=[('Content-Type', mime), ('Content-Length', len(body))])
50 return r
51
52-def serialize_exception(e):
53- tmp = {
54- "name": type(e).__module__ + "." + type(e).__name__ if type(e).__module__ else type(e).__name__,
55- "debug": traceback.format_exc(),
56- "message": u"%s" % e,
57- "arguments": to_jsonable(e.args),
58- }
59- if isinstance(e, openerp.osv.osv.except_osv):
60- tmp["exception_type"] = "except_osv"
61- elif isinstance(e, openerp.exceptions.Warning):
62- tmp["exception_type"] = "warning"
63- elif isinstance(e, openerp.exceptions.AccessError):
64- tmp["exception_type"] = "access_error"
65- elif isinstance(e, openerp.exceptions.AccessDenied):
66- tmp["exception_type"] = "access_denied"
67- return tmp
68
69 def to_jsonable(o):
70 if isinstance(o, str) or isinstance(o,unicode) or isinstance(o, int) or isinstance(o, long) \
71@@ -306,7 +310,7 @@
72 r = e
73 except Exception, e:
74 _logger.exception("An exception occured during an http request")
75- se = serialize_exception(e)
76+ se = self._serialize_exception(e)
77 error = {
78 'code': 200,
79 'message': "OpenERP Server Error",
80
81=== modified file 'addons/web/static/src/xml/base.xml'
82--- addons/web/static/src/xml/base.xml 2013-06-11 15:52:51 +0000
83+++ addons/web/static/src/xml/base.xml 2013-06-13 16:55:55 +0000
84@@ -53,8 +53,10 @@
85 <t t-name="CrashManager.error">
86 <div class="oe_error_detail">
87 <pre><t t-esc="error.message"/></pre>
88- <hr/>
89- <pre><t t-esc="error.data.debug"/></pre>
90+ <t t-if="error.data.debug">
91+ <hr/>
92+ <pre><t t-esc="error.data.debug"/></pre>
93+ </t>
94 </div>
95 </t>
96

Subscribers

People subscribed via source and target branches