Vo Minh Thu (OpenERP) (vmt-openerp) has assigned this bug to you for OpenERP 
Web (project parking):

The web client should never leave the user on a state where the user
cannot logout or fix the problem.

For example if security settings are misconfigured with audit_trail, the user 
can get an "unrecoverable error" with a traceback after logging in as 
non-admin, and then cannot find a way to logout to be able to fix it as admin.
If possible, these "unrecoverable errors" should be handled more like the 
recoverable ones that bring you back to the previous page (see the 2 attached 
screenshots for comparison), but in this case it should perhaps log you out or 
offer the option to do it.

Any other solution can be considered, as long as the user can easily
find a way to logout and get a chance to fix it as admin.

Here is an example of typical traceback for unrecoverable error:

Unrecoverable error in the server.
Traceback (most recent call last):
  File 
"/usr/lib/python2.6/site-packages/CherryPy-3.1.2-py2.6.egg/cherrypy/_cprequest.py",
 line 541, in run
    self.respond(pi)
  File 
"/usr/lib/python2.6/site-packages/CherryPy-3.1.2-py2.6.egg/cherrypy/_cprequest.py",
 line 624, in respond
    self.handle_error()
  File 
"/usr/lib/python2.6/site-packages/CherryPy-3.1.2-py2.6.egg/cherrypy/_cprequest.py",
 line 746, in handle_error
    self.error_response()
  File 
"/home2/gass/OpenERP/trunk/openobject-client-web/6.0/addons/openerp/controllers/root.py",
 line 35, in _cp_on_error
    message = errorpage.render()
  File 
"/home2/gass/OpenERP/trunk/openobject-client-web/6.0/addons/openerp/controllers/error_page.py",
 line 48, in render
    return self.__render(value)
  File 
"/home2/gass/OpenERP/trunk/openobject-client-web/6.0/openobject/tools/_expose.py",
 line 182, in func_wrapper
    res = func(*args, **kw)
  File 
"/home2/gass/OpenERP/trunk/openobject-client-web/6.0/addons/openerp/controllers/error_page.py",
 line 68, in __render
    maintenance = proxy.status()
  File 
"/home2/gass/OpenERP/trunk/openobject-client-web/6.0/addons/openerp/utils/rpc.py",
 line 396, in <lambda>
    return lambda *args: self(name, *args)
  File 
"/home2/gass/OpenERP/trunk/openobject-client-web/6.0/addons/openerp/utils/rpc.py",
 line 405, in __call__
    self._resource, *args)
  File 
"/home2/gass/OpenERP/trunk/openobject-client-web/6.0/addons/openerp/utils/rpc.py",
 line 357, in execute
    return self.gateway.execute(obj, method, *args)
  File 
"/home2/gass/OpenERP/trunk/openobject-client-web/6.0/addons/openerp/utils/rpc.py",
 line 147, in execute
    return self.__execute(obj, method, args)
  File 
"/home2/gass/OpenERP/trunk/openobject-client-web/6.0/addons/openerp/utils/rpc.py",
 line 133, in __execute
    common.error(_('Application Error'), err.backtrace)
  File 
"/home2/gass/OpenERP/trunk/openobject-client-web/6.0/addons/openerp/utils/common.py",
 line 24, in error
    raise openobject.errors.TinyError(message=msg, title=title or _("Error"))
TinyError: Traceback (most recent call last):
  File "/home2/gass/OpenERP/trunk/openobject-server/6.0/bin/netsvc.py", line 
489, in dispatch
    result = ExportService.getService(service_name).dispatch(method, auth, 
params)
  File 
"/home2/gass/OpenERP/trunk/openobject-server/6.0/bin/service/web_services.py", 
line 599, in dispatch
    res = fn(db, uid, *params)
  File 
"/home2/gass/OpenERP/trunk/openobject-server/6.0/bin/addons/audittrail/audittrail.py",
 line 511, in execute
    res = my_fct(db, uid, model, method, *args)
  File 
"/home2/gass/OpenERP/trunk/openobject-server/6.0/bin/addons/audittrail/audittrail.py",
 line 493, in my_fct
    rule_ids = rule_pool.search(cr, uid, [('object_id', '=', model_id), 
('state', '=', 'subscribed')])
  File "/home2/gass/OpenERP/trunk/openobject-server/6.0/bin/osv/orm.py", line 
1736, in search
    return self._search(cr, user, args, offset=offset, limit=limit, 
order=order, context=context, count=count)
  File "/home2/gass/OpenERP/trunk/openobject-server/6.0/bin/osv/orm.py", line 
3983, in _search
    self.pool.get('ir.model.access').check(cr, access_rights_uid or user, 
self._name, 'read', context=context)
  File "/home2/gass/OpenERP/trunk/openobject-server/6.0/bin/tools/misc.py", 
line 823, in cached_result
    result2 = fn(self2, cr, *args[:self.skiparg-2], **kwargs2)
  File 
"/home2/gass/OpenERP/trunk/openobject-server/6.0/bin/addons/base/ir/ir_model.py",
 line 514, in check
    raise except_orm(_('AccessError'), msgs[mode] % (model_name, groups) )
except_orm: ('AccessError', u'You can not read this document (audittrail.rule) 
! Be sure your user belongs to one of these groups: Employee.')

** Affects: openobject-web
     Importance: Low
     Assignee: OpenERP SA's Web Client R&D (openerp-dev-web)
         Status: Confirmed

-- 
[trunk] unrecoverable errors do not let the user logout to fix it
https://bugs.launchpad.net/bugs/719289
You received this bug notification because you are a member of OpenERP SA's Web 
Client R&D, which is a bug assignee.

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-web
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-web
More help   : https://help.launchpad.net/ListHelp

Reply via email to