ValueError: "undefined get method !" while evaluating u'action_ship_create()' in Odoo

ValueError: "undefined get method !" while evaluating u'action_ship_create()' in Odoo

我有自定义模块,其中覆盖了 sale 模块的方法。

方法名称是action_ship_create()

这是我的代码:

def action_ship_create(self, cr, uid, ids, context=None):
    res = super(sale_order, self).action_ship_create(cr, uid, ids, context=context)
    #logic for passing value
    return res

根据 订单政策 = 'picking' 下订单并点击 确认销售 按钮。我遇到了这个错误:

Exception during JSON request handling.
Traceback (most recent call last):
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/http.py", line 517, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/http.py", line 538, in dispatch
    result = self._call_function(**self.params)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/http.py", line 294, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/http.py", line 291, in checked_call
    return self.endpoint(*a, **kw)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/http.py", line 754, in __call__
    return self.method(*args, **kw)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/http.py", line 387, in response_wrap
    response = f(*args, **kw)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/addons/web/controllers/main.py", line 953, in call_button
    action = self._call_kw(model, method, args, {})
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/addons/web/controllers/main.py", line 941, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/addons/portal_sale/portal_sale.py", line 67, in action_button_confirm
    return super(sale_order, self).action_button_confirm(cr, uid, ids, context=context)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/addons/sale/sale.py", line 598, in action_button_confirm
    self.signal_workflow(cr, uid, ids, 'order_confirm')
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/models.py", line 3483, in signal_workflow
    result[res_id] = workflow.trg_validate(uid, self._name, res_id, signal, cr)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/__init__.py", line 85, in trg_validate
    return WorkflowService.new(cr, uid, res_type, res_id).validate(signal)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/service.py", line 91, in validate
    res2 = wi.validate(signal)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/instance.py", line 75, in validate
    wi.process(signal=signal, force_running=force_running, stack=stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 120, in process
    ok = self._split_test(activity['split_mode'], signal, stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 248, in _split_test
    self._join_test(t[0], t[1], stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 257, in _join_test
    WorkflowItem.create(self.session, self.record, activity, inst_id, stack=stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 95, in create
    workflow_item.process(stack=stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 120, in process
    ok = self._split_test(activity['split_mode'], signal, stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 248, in _split_test
    self._join_test(t[0], t[1], stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 257, in _join_test
    WorkflowItem.create(self.session, self.record, activity, inst_id, stack=stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 95, in create
    workflow_item.process(stack=stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 120, in process
    ok = self._split_test(activity['split_mode'], signal, stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 248, in _split_test
    self._join_test(t[0], t[1], stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 257, in _join_test
    WorkflowItem.create(self.session, self.record, activity, inst_id, stack=stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 95, in create
    workflow_item.process(stack=stack)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 116, in process
    if not self._execute(activity, stack):
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 162, in _execute
    returned_action = self.wkf_expr_execute(activity)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 313, in wkf_expr_execute
    return self.wkf_expr_eval_expr(activity['action'])
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/workflow/workitem.py", line 291, in wkf_expr_eval_expr
    result = eval(line, env, nocopy=True)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/tools/safe_eval.py", line 313, in safe_eval
    return eval(c, globals_dict, locals_dict)
  File "", line 1, in <module>
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 235, in wrapper
    return new_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 552, in new_api
    result = method(self._model, cr, uid, self.ids, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/playaround/test_sale_stock/sale.py", line 222, in action_ship_create
    ret = super(sale_order, self).action_ship_create(cr, uid, ids, context=context)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/addons/sale/sale.py", line 724, in action_ship_create
    procurement_obj.run(cr, uid, proc_ids, context=context)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/addons/stock/procurement.py", line 219, in run
    self.pool.get('stock.move').action_confirm(cr, uid, move_to_confirm_ids, context=context)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/addons/stock/stock.py", line 2126, in action_confirm
    self._picking_assign(cr, uid, move_ids, procurement_group, location_from, location_to, context=context)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/addons/stock/stock.py", line 2062, in _picking_assign
    return self.write(cr, uid, move_ids, {'picking_id': pick}, context=context)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/addons/purchase/stock.py", line 36, in write
    res = super(stock_move, self).write(cr, uid, ids, vals, context=context)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/addons/stock/stock.py", line 1937, in write
    return super(stock_move, self).write(cr, uid, ids, vals, context=context)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 360, in old_api
    result = method(recs, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/models.py", line 3700, in write
    self._write(old_vals)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 235, in wrapper
    return new_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 552, in new_api
    result = method(self._model, cr, uid, self.ids, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/models.py", line 3942, in _write
    self.pool[model_name]._store_set_values(cr, user, todo, fields_to_recompute, context)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/api.py", line 237, in wrapper
    return old_api(self, *args, **kwargs)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/models.py", line 4337, in _store_set_values
    result = column.get(cr, self, ids, f, SUPERUSER_ID, context=context)
  File "/home/odoo/workspace/odoo-8.0-5ca7fa1/openerp/osv/fields.py", line 196, in get
    raise Exception(_('undefined get method !'))
ValueError: "undefined get method !" while evaluating
u'action_ship_create()'

任何想法或线索将不胜感激。

根据@AnderiBoyanov 的建议,我们使用 import pdb; pdb.set_trace() 进行调试,发现我在 stock.picking

上的选择字段有问题

所以我们刚刚改进了 stock.picking 上的选择字段,并且还改进了 stock.move

升级模块后,一切正常