← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 719289] Re: [trunk] unrecoverable errors do not let the user logout to fix it

 

** Project changed: openobject-web => openobject-client-web

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/719289

Title:
  [trunk] unrecoverable errors do not let the user logout to fix it

Status in OpenERP Web Client:
  Confirmed

Bug description:
  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.')



References