← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 717561] Re: [6.0.1] removing account_analytic_plans breaks "journal items" view

 

Hello,

The 'Analytic Distribution' on 'Journal View' has been added from the xml file by overriding the 'Analytic Account' record.
And when we uninstall the module it could not replace the previously existed 'Analytic Account' record.

So it seems problem in Framework.
I request framework team to check it.

** Changed in: openobject-addons
       Status: In Progress => Confirmed

-- 
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/717561

Title:
  [6.0.1] removing account_analytic_plans breaks "journal items" view

Status in OpenERP Server:
  Confirmed

Bug description:
  Standard stable 6.0.1 package for server, addons and web server.

  When I remove the account_analytic_plans module, I can no longer access the menu Accounting/entries/Journal Items (and others).
  In GTK client, no message (which should deserve by itself a bug...), menu just dont open.
  In web client, I get the following message:

  <type 'exceptions.KeyError'>	Python 2.6.5: /usr/bin/python
  Sat Feb 12 12:26:59 2011

  A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
   /usr/local/lib/python2.6/dist-packages/CherryPy-3.1.2-py2.6.egg/cherrypy/_cprequest.py in respond(self=<cherrypy._cprequest.Request object>, path_info='/openerp/execute')
    604                     if self.handler:
    605                         self.stage = 'handler'
    606                         cherrypy.response.body = self.handler()
    607                     
    608                     self.stage = 'before_finalize'
  global cherrypy = <module 'cherrypy' from '/usr/local/lib/python2..../CherryPy-3.1.2-py2.6.egg/cherrypy/__init__.pyc'>, cherrypy.response = <cherrypy._ThreadLocalProxy object>, cherrypy.response.body = [], self = <cherrypy._cprequest.Request object>, self.handler = <cherrypy._cpdispatch.LateParamPageHandler object>
   /usr/local/lib/python2.6/dist-packages/CherryPy-3.1.2-py2.6.egg/cherrypy/_cpdispatch.py in __call__(self=<cherrypy._cpdispatch.LateParamPageHandler object>)
     23     def __call__(self):
     24         try:
     25             return self.callable(*self.args, **self.kwargs)
     26         except TypeError, x:
     27             test_callable_spec(self.callable, self.args, self.kwargs)
  self = <cherrypy._cpdispatch.LateParamPageHandler object>, self.callable = <bound method Root.default of <openobject.controllers._root.Root object>>, self.args = ('openerp', 'execute'), self.kwargs = {'action': {'auto_refresh': 0, 'auto_search': True, 'context': u"{'search_default_posted': 1}", 'display_menu_tip': True, 'domain': '[]', 'filter': False, 'groups_id': [], 'help': u'This view can be used by accountants in order to...is account and the counterpart "Account Payable".', 'id': 177, 'limit': 80, ...}, 'data': {'context': {'client': 'web', 'department_id': False, 'lang': u'en_US', 'project_id': False, 'search_default_posted': 1, 'section_id': False, 'tz': False}, 'id': 191, 'ids': [191], 'model': 'ir.ui.menu', 'report_type': 'pdf'}, 'payload': 'eJxtU02PEzEM_StWL9mVqooKrRa47QGk5cIKygmtRmnG0wYy...hjdU5biPrBRsmzvN_vyyL6l1IdauFb7sJUGZGkNfj8S_ys3Bm'}
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/openobject/tools/_expose.py in func_wrapper(*args=(<openobject.controllers._root.Root object>, 'openerp', 'execute'), **kw={'_': '1297484856259', 'payload': 'eJxtU02PEzEM_StWL9mVqooKrRa47QGk5cIKygmtRmnG0wYy...hjdU5biPrBRsmzvN_vyyL6l1IdauFb7sJUGZGkNfj8S_ys3Bm'})
    180                 raise cherrypy.HTTPError(405)
    181 
    182             res = func(*args, **kw)
    183             if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
    184                 cherrypy.response.headers['Content-Type'] = 'text/javascript'
  global res = '/usr/local/lib/python2.6/dist-packages/openerp_w...dons/openerp/widgets/templates/search/search.mako', func = <function default>, args = (<openobject.controllers._root.Root object>, 'openerp', 'execute'), kw = {'_': '1297484856259', 'payload': 'eJxtU02PEzEM_StWL9mVqooKrRa47QGk5cIKygmtRmnG0wYy...hjdU5biPrBRsmzvN_vyyL6l1IdauFb7sJUGZGkNfj8S_ys3Bm'}
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/openobject/controllers/_root.py in default(self=<openobject.controllers._root.Root object>, *args=('openerp', 'execute'), **kw={'_': '1297484856259', 'payload': 'eJxtU02PEzEM_StWL9mVqooKrRa47QGk5cIKygmtRmnG0wYy...hjdU5biPrBRsmzvN_vyyL6l1IdauFb7sJUGZGkNfj8S_ys3Bm'})
     85             request.handler = cherrypy.NotFound()
     86 
     87         return request.handler()
     88 
     89     def find_handler(self):
  request = <cherrypy._ThreadLocalProxy object>, request.handler = <cherrypy._cpdispatch.LateParamPageHandler object>
   /usr/local/lib/python2.6/dist-packages/CherryPy-3.1.2-py2.6.egg/cherrypy/_cpdispatch.py in __call__(self=<cherrypy._cpdispatch.LateParamPageHandler object>)
     23     def __call__(self):
     24         try:
     25             return self.callable(*self.args, **self.kwargs)
     26         except TypeError, x:
     27             test_callable_spec(self.callable, self.args, self.kwargs)
  self = <cherrypy._cpdispatch.LateParamPageHandler object>, self.callable = <function index>, self.args = (), self.kwargs = {'action': {'auto_refresh': 0, 'auto_search': True, 'context': u"{'search_default_posted': 1}", 'display_menu_tip': True, 'domain': '[]', 'filter': False, 'groups_id': [], 'help': u'This view can be used by accountants in order to...is account and the counterpart "Account Payable".', 'id': 177, 'limit': 80, ...}, 'data': {'context': {'client': 'web', 'department_id': False, 'lang': u'en_US', 'project_id': False, 'search_default_posted': 1, 'section_id': False, 'tz': False}, 'id': 191, 'ids': [191], 'model': 'ir.ui.menu', 'report_type': 'pdf'}, 'payload': 'eJxtU02PEzEM_StWL9mVqooKrRa47QGk5cIKygmtRmnG0wYy...hjdU5biPrBRsmzvN_vyyL6l1IdauFb7sJUGZGkNfj8S_ys3Bm'}
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/controllers/utils.py in wrapper(*args=(), **kw={'payload': 'eJxtU02PEzEM_StWL9mVqooKrRa47QGk5cIKygmtRmnG0wYy...hjdU5biPrBRsmzvN_vyyL6l1IdauFb7sJUGZGkNfj8S_ys3Bm'})
    110             # User is logged in; allow access
    111             clear_login_fields(kw)
    112             return fn(*args, **kw)
    113         else:
    114             action = kw.get('login_action', '')
  fn = <bound method Execute.index of <openerp.controllers.execute.Execute object>>, args = (), kw = {'payload': 'eJxtU02PEzEM_StWL9mVqooKrRa47QGk5cIKygmtRmnG0wYy...hjdU5biPrBRsmzvN_vyyL6l1IdauFb7sJUGZGkNfj8S_ys3Bm'}
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/openobject/tools/_expose.py in func_wrapper(*args=(<openerp.controllers.execute.Execute object>,), **kw={'payload': 'eJxtU02PEzEM_StWL9mVqooKrRa47QGk5cIKygmtRmnG0wYy...hjdU5biPrBRsmzvN_vyyL6l1IdauFb7sJUGZGkNfj8S_ys3Bm'})
    180                 raise cherrypy.HTTPError(405)
    181 
    182             res = func(*args, **kw)
    183             if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
    184                 cherrypy.response.headers['Content-Type'] = 'text/javascript'
  global res = '/usr/local/lib/python2.6/dist-packages/openerp_w...dons/openerp/widgets/templates/search/search.mako', func = <function index>, args = (<openerp.controllers.execute.Execute object>,), kw = {'payload': 'eJxtU02PEzEM_StWL9mVqooKrRa47QGk5cIKygmtRmnG0wYy...hjdU5biPrBRsmzvN_vyyL6l1IdauFb7sJUGZGkNfj8S_ys3Bm'}
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/controllers/execute.py in index(self=<openerp.controllers.execute.Execute object>, payload='eJxtU02PEzEM_StWL9mVqooKrRa47QGk5cIKygmtRmnG0wYy...hjdU5biPrBRsmzvN_vyyL6l1IdauFb7sJUGZGkNfj8S_ys3Bm')
     17             zlib.decompress(
     18                 base64.urlsafe_b64decode(payload)))
     19         action, data = decoded_payload['action'], decoded_payload['data']
     20         cherrypy.request.params.update(decoded_payload)
     21         return actions.execute(action, **data)
  global actions = <module 'openerp.controllers.actions' from '/usr...y2.6.egg/addons/openerp/controllers/actions.pyc'>, actions.execute = <function execute>, action = {'auto_refresh': 0, 'auto_search': True, 'context': u"{'search_default_posted': 1}", 'display_menu_tip': True, 'domain': '[]', 'filter': False, 'groups_id': [], 'help': u'This view can be used by accountants in order to...is account and the counterpart "Account Payable".', 'id': 177, 'limit': 80, ...}, data = {'context': {'client': 'web', 'department_id': False, 'lang': u'en_US', 'project_id': False, 'search_default_posted': 1, 'section_id': False, 'tz': False}, 'id': 191, 'ids': [191], 'model': 'ir.ui.menu', 'report_type': 'pdf'}
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/controllers/actions.py in execute(action={'auto_refresh': 0, 'auto_search': True, 'context': u"{'search_default_posted': 1}", 'display_menu_tip': True, 'domain': '[]', 'filter': False, 'groups_id': [], 'help': u'This view can be used by accountants in order to...is account and the counterpart "Account Payable".', 'id': 177, 'limit': 80, ...}, **data={'context': {'client': 'web', 'department_id': False, 'lang': u'en_US', 'project_id': False, 'search_default_posted': 1, 'section_id': False, 'tz': False}, 'id': 191, 'ids': [191], 'limit': 20, 'model': 'ir.ui.menu', 'report_type': 'pdf', 'res_id': None, 'res_model': u'account.move.line', 'search_view': None, 'view_mode': u'tree,form', ...})
    380 
    381     action_executor = ACTIONS_BY_TYPE[action['type']]
    382     return action_executor(action, data)
    383 
    384 def execute_url(**data):
  action_executor = <function act_window>, action = {'auto_refresh': 0, 'auto_search': True, 'context': u"{'search_default_posted': 1}", 'display_menu_tip': True, 'domain': '[]', 'filter': False, 'groups_id': [], 'help': u'This view can be used by accountants in order to...is account and the counterpart "Account Payable".', 'id': 177, 'limit': 80, ...}, data = {'context': {'client': 'web', 'department_id': False, 'lang': u'en_US', 'project_id': False, 'search_default_posted': 1, 'section_id': False, 'tz': False}, 'id': 191, 'ids': [191], 'limit': 20, 'model': 'ir.ui.menu', 'report_type': 'pdf', 'res_id': None, 'res_model': u'account.move.line', 'search_view': None, 'view_mode': u'tree,form', ...}
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/controllers/actions.py in act_window(action={'auto_refresh': 0, 'auto_search': True, 'context': u"{'search_default_posted': 1}", 'display_menu_tip': True, 'domain': '[]', 'filter': False, 'groups_id': [], 'help': u'This view can be used by accountants in order to...is account and the counterpart "Account Payable".', 'id': 177, 'limit': 80, ...}, data={'context': {'client': 'web', 'department_id': False, 'lang': u'en_US', 'project_id': False, 'search_default_posted': 1, 'section_id': False, 'tz': False}, 'id': 191, 'ids': [191], 'limit': 20, 'model': 'ir.ui.menu', 'report_type': 'pdf', 'res_id': None, 'res_model': u'account.move.line', 'search_view': None, 'view_mode': u'tree,form', ...})
    268                           search_view=data['search_view'],
    269                           context_menu=data.get('context_menu'),
    270                           display_menu_tip=display_menu_tip)
    271 
    272 def server(action, data):
  display_menu_tip = u'This view can be used by accountants in order to...is account and the counterpart "Account Payable".'
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/controllers/actions.py in execute_window(view_ids=[False, False], model=u'account.move.line', res_id=None, domain=[], view_type=u'form', context={'_terp_view_name': u'Journal Items', 'active_id': 191, 'active_ids': [191], 'active_model': 'ir.ui.menu', 'client': 'web', 'department_id': False, 'journal_id': None, 'lang': u'en_US', 'normal_view': False, 'period_id': None, ...}, mode=[u'tree', u'form'], name=u'Journal Items', target=u'current', limit=20, search_view=None, context_menu=None, display_menu_tip=u'This view can be used by accountants in order to...is account and the counterpart "Account Payable".')
     83         params.view_mode=mode
     84 
     85         return Form().create(params)
     86 
     87     elif view_type == 'tree':
  global Form = <class 'openerp.controllers.form.Form'>, ).create = <unbound method Form.create>, params = {'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None}
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/controllers/utils.py in wrapper(*args=({'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None},), **kw={})
    110             # User is logged in; allow access
    111             clear_login_fields(kw)
    112             return fn(*args, **kw)
    113         else:
    114             action = kw.get('login_action', '')
  fn = <bound method Form.create of <openerp.controllers.form.Form object>>, args = ({'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None},), kw = {}
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/openobject/tools/_expose.py in func_wrapper(*args=(<openerp.controllers.form.Form object>, {'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None}), **kw={})
    180                 raise cherrypy.HTTPError(405)
    181 
    182             res = func(*args, **kw)
    183             if format == 'json' or (allow_json and 'allow_json' in cherrypy.request.params):
    184                 cherrypy.response.headers['Content-Type'] = 'text/javascript'
  global res = '/usr/local/lib/python2.6/dist-packages/openerp_w...dons/openerp/widgets/templates/search/search.mako', func = <function create>, args = (<openerp.controllers.form.Form object>, {'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None}), kw = {}
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/controllers/form.py in create(self=<openerp.controllers.form.Form object>, params={'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None}, tg_errors=None)
    193         if params.view_type == 'tree':
    194             params.editable = True
    195         form = self.create_form(params, tg_errors)
    196 
    197         if not tg_errors:
  form undefined, self = <openerp.controllers.form.Form object>, self.create_form = <bound method Form.create_form of <openerp.controllers.form.Form object>>, params = {'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None}, tg_errors = None
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/controllers/form.py in create_form(self=<openerp.controllers.form.Form object>, params={'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None}, tg_errors=None)
    184         params.view_type = params.view_type or params.view_mode[0]
    185 
    186         return tw.form_view.ViewForm(params, name="view_form", action="/openerp/form/save")
    187 
    188     @expose(template="/openerp/controllers/templates/form.mako")
  global tw = <module 'openerp.widgets' from '/usr/local/lib/p...1-py2.6.egg/addons/openerp/widgets/__init__.pyc'>, tw.form_view = <module 'openerp.widgets.form_view' from '/usr/l...-py2.6.egg/addons/openerp/widgets/form_view.pyc'>, tw.form_view.ViewForm = <class 'openerp.widgets.form_view.ViewForm'>, params = {'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None}, name undefined, action undefined
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/widgets/form_view.py in __init__(self=ViewForm, params={'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None}, **kw={'action': '/openerp/form/save', 'name': 'view_form'})
     88             
     89         self.screen = Screen(prefix='', hastoolbar=True, hassubmenu=True, editable=editable, readonly=readonly,
     90                              selectable=params.selectable or 2)
     91         
     92         if self.screen.widget and self.screen.view_type in ['form', 'tree']:
  selectable undefined, params = {'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None}, params.selectable = None
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/widgets/screen.py in __init__(self=Screen, params={'_terp_view_type': u'tree', '_terp_offset': 0, ..._view_ids': [False, False], 'context_menu': None}, prefix='', name='', views_preloaded={}, hastoolbar=True, hassubmenu=True, editable=True, readonly=False, selectable=2, nolinks=1, **kw={})
    104         self.kalendar           = params.kalendar
    105         if self.view_mode:
    106             self.add_view_id(self.view_id, self.view_type)
    107 
    108     def add_view_id(self, view_id, view_type):
  self = Screen, self.add_view_id = <bound method Screen.add_view_id of Screen>, self.view_id = 998, self.view_type = u'tree'
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/widgets/screen.py in add_view_id(self=Screen, view_id=False, view_type=u'tree')
    120             view = cache.fields_view_get(self.model, view_id or False, view_type, ctx, self.hastoolbar, self.hassubmenu)
    121 
    122         self.add_view(view, view_type)
    123 
    124     def add_view(self, view, view_type='form'):
  self = Screen, self.add_view = <bound method Screen.add_view of Screen>, view = {'arch': u'<?xml version="1.0"?>\n<tree string="Accounting E..., 19, 17, 16, 18, 5, 6, 7, 4, 3, 1, 2]"/>\n</tree>', 'field_parent': False, 'fields': {'account_id': {'context': {}, 'domain': u"[('journal_id', '=', 2),('type','<>','view'), ('type','<>','closed')]", 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'account_id', 'on_change': u'onchange_account_id(account_id, partner_id)', 'relation': u'account.account', 'required': True, 'select': 2, 'selectable': True, 'string': u'Account', ...}, 'account_tax_id': {'context': {}, 'domain': [], 'relation': u'account.tax', 'selectable': True, 'string': u'Tax', 'type': u'many2one'}, 'analytic_account_id': {'context': {}, 'domain': [], 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one'}, 'credit': {'digits': (16, 2), 'selectable': True, 'string': u'Credit', 'type': u'float'}, 'date': {'digits': (16, 2), 'fnct_inv': u'_fnct_write', 'fnct_inv_arg': (u'move_id', u'date'), 'fnct_search': u'_fnct_search', 'func_method': True, 'func_obj': False, 'function': u'_fnct_read', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'date', 'on_change': u'onchange_date(date)', ...}, 'date_maturity': {'help': u'This field is used for payable and receivable jo... put the limit date for the payment of this line.', 'invisible': u"context.get('visible_id') not in [19, 17, 16, 18, 4, 3, 1, 2]", 'name': u'date_maturity', 'select': True, 'selectable': True, 'string': u'Due date', 'type': u'date'}, 'debit': {'digits': (16, 2), 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'debit', 'selectable': True, 'string': u'Debit', 'sum': u'Total debit', 'type': u'float'}, 'journal_id': {'context': u"{'journal_id': journal_id}", 'domain': [], 'invisible': u"context.get('journal_id', False)", 'name': u'journal_id', 'relation': u'account.journal', 'required': True, 'select': 1, 'selectable': True, 'string': u'Journal', 'type': u'many2one'}, 'move_id': {'context': {}, 'domain': [], 'help': u'The move of this entry line.', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'move_id', 'relation': u'account.move', 'required': u'False', 'select': 2, 'selectable': True, 'string': u'Move', ...}, 'name': {'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'name', 'required': True, 'selectable': True, 'size': 64, 'string': u'Name', 'type': u'char'}, ...}, 'model': u'account.move.line', 'name': u'account.move.line.tree', 'submenu': False, 'toolbar': {'action': [{'auto_refresh': 0, 'auto_search': True, 'context': u"{'record_id' : active_id}", 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': u'This wizard will validate all journal entries of...s are validated, you can not update them anymore.', 'id': 246, 'limit': 80, ...}, {'auto_refresh': 0, 'auto_search': True, 'context': u'{}', 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': False, 'id': 247, 'limit': 80, ...}, {'auto_refresh': 0, 'auto_search': True, 'context': u'{}', 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': False, 'id': 256, 'limit': 80, ...}, {'auto_refresh': 0, 'auto_search': True, 'context': u"{'record_id':active_id}", 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': False, 'id': 257, 'limit': 80, ...}], 'print': [], 'relate': []}, 'type': u'tree', 'view_id': 998}, view_type = u'tree'
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/widgets/screen.py in add_view(self=Screen, view={'arch': u'<?xml version="1.0"?>\n<tree string="Accounting E..., 19, 17, 16, 18, 5, 6, 7, 4, 3, 1, 2]"/>\n</tree>', 'field_parent': False, 'fields': {'account_id': {'context': {}, 'domain': u"[('journal_id', '=', 2),('type','<>','view'), ('type','<>','closed')]", 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'account_id', 'on_change': u'onchange_account_id(account_id, partner_id)', 'relation': u'account.account', 'required': True, 'select': 2, 'selectable': True, 'string': u'Account', ...}, 'account_tax_id': {'context': {}, 'domain': [], 'relation': u'account.tax', 'selectable': True, 'string': u'Tax', 'type': u'many2one'}, 'analytic_account_id': {'context': {}, 'domain': [], 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one'}, 'credit': {'digits': (16, 2), 'selectable': True, 'string': u'Credit', 'type': u'float'}, 'date': {'digits': (16, 2), 'fnct_inv': u'_fnct_write', 'fnct_inv_arg': (u'move_id', u'date'), 'fnct_search': u'_fnct_search', 'func_method': True, 'func_obj': False, 'function': u'_fnct_read', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'date', 'on_change': u'onchange_date(date)', ...}, 'date_maturity': {'help': u'This field is used for payable and receivable jo... put the limit date for the payment of this line.', 'invisible': u"context.get('visible_id') not in [19, 17, 16, 18, 4, 3, 1, 2]", 'name': u'date_maturity', 'select': True, 'selectable': True, 'string': u'Due date', 'type': u'date'}, 'debit': {'digits': (16, 2), 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'debit', 'selectable': True, 'string': u'Debit', 'sum': u'Total debit', 'type': u'float'}, 'journal_id': {'context': u"{'journal_id': journal_id}", 'domain': [], 'invisible': u"context.get('journal_id', False)", 'name': u'journal_id', 'relation': u'account.journal', 'required': True, 'select': 1, 'selectable': True, 'string': u'Journal', 'type': u'many2one'}, 'move_id': {'context': {}, 'domain': [], 'help': u'The move of this entry line.', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'move_id', 'relation': u'account.move', 'required': u'False', 'select': 2, 'selectable': True, 'string': u'Move', ...}, 'name': {'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'name', 'required': True, 'selectable': True, 'size': 64, 'string': u'Name', 'type': u'char'}, ...}, 'model': u'account.move.line', 'name': u'account.move.line.tree', 'submenu': False, 'toolbar': {'action': [{'auto_refresh': 0, 'auto_search': True, 'context': u"{'record_id' : active_id}", 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': u'This wizard will validate all journal entries of...s are validated, you can not update them anymore.', 'id': 246, 'limit': 80, ...}, {'auto_refresh': 0, 'auto_search': True, 'context': u'{}', 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': False, 'id': 247, 'limit': 80, ...}, {'auto_refresh': 0, 'auto_search': True, 'context': u'{}', 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': False, 'id': 256, 'limit': 80, ...}, {'auto_refresh': 0, 'auto_search': True, 'context': u"{'record_id':active_id}", 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': False, 'id': 257, 'limit': 80, ...}], 'print': [], 'relate': []}, 'type': u'tree', 'view_id': 998}, view_type=u'tree')
    128         
    129         from _views import get_view_widget
    130         self.widget = get_view_widget(view_type, self)
    131 
    132         self.string = (self.widget or '') and self.widget.string
  self = Screen, self.widget = None, get_view_widget = <function get_view_widget>, view_type = u'tree'
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/widgets/_views.py in get_view_widget(kind=u'tree', screen=Screen)
    135         raise Exception("view '%s' not supported." % kind)
    136 
    137     return view(screen)
    138 
    139 def get_registered_views():
  view = <openerp.widgets._views.ListView object>, screen = Screen
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/widgets/_views.py in __call__(self=<openerp.widgets._views.ListView object>, screen=Screen)
    116                                     count=screen.count, nolinks=screen.link,
    117                                     m2m=screen.m2m, o2m=screen.o2m,
    118                                     default_data=screen.default_value)
    119 
    120         screen.ids = widget.ids
  default_data undefined, screen = Screen, screen.default_value = []
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/widgets/listgrid.py in __init__(self=List, name='_terp_list', model=u'account.move.line', view={'arch': u'<?xml version="1.0"?>\n<tree string="Accounting E..., 19, 17, 16, 18, 5, 6, 7, 4, 3, 1, 2]"/>\n</tree>', 'field_parent': False, 'fields': {'account_id': {'context': {}, 'domain': u"[('journal_id', '=', 2),('type','<>','view'), ('type','<>','closed')]", 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'account_id', 'on_change': u'onchange_account_id(account_id, partner_id)', 'relation': u'account.account', 'required': True, 'select': 2, 'selectable': True, 'string': u'Account', ...}, 'account_tax_id': {'context': {}, 'domain': [], 'relation': u'account.tax', 'selectable': True, 'string': u'Tax', 'type': u'many2one'}, 'analytic_account_id': {'context': {}, 'domain': [], 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one'}, 'credit': {'digits': (16, 2), 'selectable': True, 'string': u'Credit', 'type': u'float'}, 'date': {'digits': (16, 2), 'fnct_inv': u'_fnct_write', 'fnct_inv_arg': (u'move_id', u'date'), 'fnct_search': u'_fnct_search', 'func_method': True, 'func_obj': False, 'function': u'_fnct_read', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'date', 'on_change': u'onchange_date(date)', ...}, 'date_maturity': {'help': u'This field is used for payable and receivable jo... put the limit date for the payment of this line.', 'invisible': u"context.get('visible_id') not in [19, 17, 16, 18, 4, 3, 1, 2]", 'name': u'date_maturity', 'select': True, 'selectable': True, 'string': u'Due date', 'type': u'date'}, 'debit': {'digits': (16, 2), 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'debit', 'selectable': True, 'string': u'Debit', 'sum': u'Total debit', 'type': u'float'}, 'journal_id': {'context': u"{'journal_id': journal_id}", 'domain': [], 'invisible': u"context.get('journal_id', False)", 'name': u'journal_id', 'relation': u'account.journal', 'required': True, 'select': 1, 'selectable': True, 'string': u'Journal', 'type': u'many2one'}, 'move_id': {'context': {}, 'domain': [], 'help': u'The move of this entry line.', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'move_id', 'relation': u'account.move', 'required': u'False', 'select': 2, 'selectable': True, 'string': u'Move', ...}, 'name': {'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'name', 'required': True, 'selectable': True, 'size': 64, 'string': u'Name', 'type': u'char'}, ...}, 'model': u'account.move.line', 'name': u'account.move.line.tree', 'submenu': False, 'toolbar': {'action': [{'auto_refresh': 0, 'auto_search': True, 'context': u"{'record_id' : active_id}", 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': u'This wizard will validate all journal entries of...s are validated, you can not update them anymore.', 'id': 246, 'limit': 80, ...}, {'auto_refresh': 0, 'auto_search': True, 'context': u'{}', 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': False, 'id': 247, 'limit': 80, ...}, {'auto_refresh': 0, 'auto_search': True, 'context': u'{}', 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': False, 'id': 256, 'limit': 80, ...}, {'auto_refresh': 0, 'auto_search': True, 'context': u"{'record_id':active_id}", 'display_menu_tip': True, 'domain': False, 'filter': False, 'groups_id': [], 'help': False, 'id': 257, 'limit': 80, ...}], 'print': [], 'relate': []}, 'type': u'tree', 'view_id': 998}, ids=[90, 89], domain=[], context={'_terp_view_name': u'Journal Items', 'active_id': 191, 'active_ids': [191], 'active_model': 'ir.ui.menu', 'client': 'web', 'department_id': False, 'journal_id': None, 'lang': u'en_US', 'normal_view': False, 'period_id': None, ...}, **kw={'count': 0, 'default_data': [], 'editable': True, 'limit': 20, 'm2m': 0, 'nolinks': 1, 'o2m': 0, 'offset': 0, 'selectable': 2, 'view_mode': [u'tree', u'form']})
    200 
    201         self.values = copy.deepcopy(data)
    202         self.headers, self.hiddens, self.data, self.field_total, self.buttons = self.parse(root, fields, data)
    203 
    204         for k, v in self.field_total.items():
  self = List, self.headers = None, self.hiddens = [], self.data = None, self.field_total = {}, self.buttons = [], self.parse = <bound method List.parse of List>, root = <DOM Element: tree>, fields = {'account_id': {'context': {}, 'domain': u"[('journal_id', '=', 2),('type','<>','view'), ('type','<>','closed')]", 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'account_id', 'on_change': u'onchange_account_id(account_id, partner_id)', 'relation': u'account.account', 'required': True, 'select': 2, 'selectable': True, 'string': u'Account', ...}, 'account_tax_id': {'context': {}, 'domain': [], 'relation': u'account.tax', 'selectable': True, 'string': u'Tax', 'type': u'many2one'}, 'analytic_account_id': {'context': {}, 'domain': [], 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one'}, 'credit': {'digits': (16, 2), 'selectable': True, 'string': u'Credit', 'type': u'float'}, 'date': {'digits': (16, 2), 'fnct_inv': u'_fnct_write', 'fnct_inv_arg': (u'move_id', u'date'), 'fnct_search': u'_fnct_search', 'func_method': True, 'func_obj': False, 'function': u'_fnct_read', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'date', 'on_change': u'onchange_date(date)', ...}, 'date_maturity': {'help': u'This field is used for payable and receivable jo... put the limit date for the payment of this line.', 'invisible': u"context.get('visible_id') not in [19, 17, 16, 18, 4, 3, 1, 2]", 'name': u'date_maturity', 'select': True, 'selectable': True, 'string': u'Due date', 'type': u'date'}, 'debit': {'digits': (16, 2), 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'debit', 'selectable': True, 'string': u'Debit', 'sum': u'Total debit', 'type': u'float'}, 'journal_id': {'context': u"{'journal_id': journal_id}", 'domain': [], 'invisible': u"context.get('journal_id', False)", 'name': u'journal_id', 'relation': u'account.journal', 'required': True, 'select': 1, 'selectable': True, 'string': u'Journal', 'type': u'many2one'}, 'move_id': {'context': {}, 'domain': [], 'help': u'The move of this entry line.', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'move_id', 'relation': u'account.move', 'required': u'False', 'select': 2, 'selectable': True, 'string': u'Move', ...}, 'name': {'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'name', 'required': True, 'selectable': True, 'size': 64, 'string': u'Name', 'type': u'char'}, ...}, data = [{'account_id': M2O, 'account_tax_id': False, 'analytic_account_id': False, 'credit': 1900.0, 'date': DateTime, 'date_maturity': Hidden, 'debit': Float, 'id': 90, 'journal_id': M2O, 'move_id': M2O, ...}, {'account_id': M2O, 'account_tax_id': False, 'analytic_account_id': False, 'credit': 0.0, 'date': DateTime, 'date_maturity': Hidden, 'debit': Float, 'id': 89, 'journal_id': M2O, 'move_id': M2O, ...}]
   /usr/local/lib/python2.6/dist-packages/openerp_web-6.0.1-py2.6.egg/addons/openerp/widgets/listgrid.py in parse(self=List, root=<DOM Element: tree>, fields={'account_id': {'context': {}, 'domain': u"[('journal_id', '=', 2),('type','<>','view'), ('type','<>','closed')]", 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'account_id', 'on_change': u'onchange_account_id(account_id, partner_id)', 'relation': u'account.account', 'required': True, 'select': 2, 'selectable': True, 'string': u'Account', ...}, 'account_tax_id': {'context': {}, 'domain': [], 'relation': u'account.tax', 'selectable': True, 'string': u'Tax', 'type': u'many2one'}, 'analytic_account_id': {'context': {}, 'domain': [], 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one'}, 'credit': {'digits': (16, 2), 'selectable': True, 'string': u'Credit', 'type': u'float'}, 'date': {'digits': (16, 2), 'fnct_inv': u'_fnct_write', 'fnct_inv_arg': (u'move_id', u'date'), 'fnct_search': u'_fnct_search', 'func_method': True, 'func_obj': False, 'function': u'_fnct_read', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'date', 'on_change': u'onchange_date(date)', ...}, 'date_maturity': {'help': u'This field is used for payable and receivable jo... put the limit date for the payment of this line.', 'invisible': u"context.get('visible_id') not in [19, 17, 16, 18, 4, 3, 1, 2]", 'name': u'date_maturity', 'select': True, 'selectable': True, 'string': u'Due date', 'type': u'date'}, 'debit': {'digits': (16, 2), 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'debit', 'selectable': True, 'string': u'Debit', 'sum': u'Total debit', 'type': u'float'}, 'journal_id': {'context': u"{'journal_id': journal_id}", 'domain': [], 'invisible': u"context.get('journal_id', False)", 'name': u'journal_id', 'relation': u'account.journal', 'required': True, 'select': 1, 'selectable': True, 'string': u'Journal', 'type': u'many2one'}, 'move_id': {'context': {}, 'domain': [], 'help': u'The move of this entry line.', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'move_id', 'relation': u'account.move', 'required': u'False', 'select': 2, 'selectable': True, 'string': u'Move', ...}, 'name': {'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'name', 'required': True, 'selectable': True, 'size': 64, 'string': u'Name', 'type': u'char'}, ...}, data=[{'account_id': M2O, 'account_tax_id': False, 'analytic_account_id': False, 'credit': 1900.0, 'date': DateTime, 'date_maturity': Hidden, 'debit': Float, 'id': 90, 'journal_id': M2O, 'move_id': M2O, ...}, {'account_id': M2O, 'account_tax_id': False, 'analytic_account_id': False, 'credit': 0.0, 'date': DateTime, 'date_maturity': Hidden, 'debit': Float, 'id': 89, 'journal_id': M2O, 'move_id': M2O, ...}])
    371 
    372                     try:
    373                         fields[name].update(attrs)
    374                     except:
    375                         print "-"*30,"\n malformed tag for:", attrs
  fields = {'account_id': {'context': {}, 'domain': u"[('journal_id', '=', 2),('type','<>','view'), ('type','<>','closed')]", 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'account_id', 'on_change': u'onchange_account_id(account_id, partner_id)', 'relation': u'account.account', 'required': True, 'select': 2, 'selectable': True, 'string': u'Account', ...}, 'account_tax_id': {'context': {}, 'domain': [], 'relation': u'account.tax', 'selectable': True, 'string': u'Tax', 'type': u'many2one'}, 'analytic_account_id': {'context': {}, 'domain': [], 'relation': u'account.analytic.account', 'selectable': True, 'string': u'Analytic Account', 'type': u'many2one'}, 'credit': {'digits': (16, 2), 'selectable': True, 'string': u'Credit', 'type': u'float'}, 'date': {'digits': (16, 2), 'fnct_inv': u'_fnct_write', 'fnct_inv_arg': (u'move_id', u'date'), 'fnct_search': u'_fnct_search', 'func_method': True, 'func_obj': False, 'function': u'_fnct_read', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'date', 'on_change': u'onchange_date(date)', ...}, 'date_maturity': {'help': u'This field is used for payable and receivable jo... put the limit date for the payment of this line.', 'invisible': u"context.get('visible_id') not in [19, 17, 16, 18, 4, 3, 1, 2]", 'name': u'date_maturity', 'select': True, 'selectable': True, 'string': u'Due date', 'type': u'date'}, 'debit': {'digits': (16, 2), 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'debit', 'selectable': True, 'string': u'Debit', 'sum': u'Total debit', 'type': u'float'}, 'journal_id': {'context': u"{'journal_id': journal_id}", 'domain': [], 'invisible': u"context.get('journal_id', False)", 'name': u'journal_id', 'relation': u'account.journal', 'required': True, 'select': 1, 'selectable': True, 'string': u'Journal', 'type': u'many2one'}, 'move_id': {'context': {}, 'domain': [], 'help': u'The move of this entry line.', 'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'move_id', 'relation': u'account.move', 'required': u'False', 'select': 2, 'selectable': True, 'string': u'Move', ...}, 'name': {'invisible': u"context.get('visible_id') not in [15, 19, 17, 16, 18, 9, 5, 6, 7, 4, 3, 1, 2, None]", 'name': u'name', 'required': True, 'selectable': True, 'size': 64, 'string': u'Name', 'type': u'char'}, ...}, name = u'analytics_id', ].update undefined, attrs = {'invisible': u"context.get('visible_id') not in [9]", 'name': u'analytics_id'}

  <type 'exceptions.KeyError'>: u'analytics_id'
        args = (u'analytics_id',)
        message = u'analytics_id' 

  After investigating, it seems that a record "analytics_id" is created
  in account_journal_column that is not removed when removing the
  module. removing the record manually in postgres seems to do the trick





References