c2c-oerpscenario team mailing list archive
-
c2c-oerpscenario team
-
Mailing list archive
-
Message #16066
[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