Odoo.sh 在 Branch Staging 上升级 v13-v16:AssertionError: Field without selection

问题描述 投票:0回答:0

在使用 upgrade.odoo.com 成功执行数据库升级(v13e 到 v16e)并将其导入到我在 odoo.sh 的暂存分支上之后

当我连接到此 odoo16e-Staging-branch(中性数据库)并尝试在应用程序中重新安装我的自定义模块(扩展 website_event)时,我收到此错误:

AssertionError: Field event.event.state without selection

RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
  File "/home/odoo/src/odoo/odoo/http.py", line 1583, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
  File "/home/odoo/src/odoo/odoo/service/model.py", line 134, in retrying
    result = func()
  File "/home/odoo/src/odoo/odoo/http.py", line 1610, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
  File "/home/odoo/src/odoo/odoo/http.py", line 1807, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
  File "/home/odoo/src/odoo/addons/website/models/ir_http.py", line 235, in _dispatch
    response = super()._dispatch(endpoint)
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
  File "/home/odoo/src/odoo/odoo/http.py", line 696, in route_wrapper
    result = endpoint(self, *args, **params_ok)
  File "/home/odoo/src/odoo/addons/web/controllers/dataset.py", line 46, in call_button
    action = self._call_kw(model, method, args, kwargs)
  File "/home/odoo/src/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/home/odoo/src/odoo/odoo/api.py", line 461, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/home/odoo/src/odoo/odoo/api.py", line 448, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "<decorator-gen-74>", line 2, in button_immediate_install
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py", line 76, in check_and_log
    return method(self, *args, **kwargs)
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py", line 491, in button_immediate_install
    return self._button_immediate_function(type(self).button_install)
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py", line 615, in _button_immediate_function
    registry = modules.registry.Registry.new(self._cr.dbname, update_module=True)
  File "<decorator-gen-14>", line 2, in new
  File "/home/odoo/src/odoo/odoo/tools/func.py", line 87, in locked
    return func(inst, *args, **kwargs)
  File "/home/odoo/src/odoo/odoo/modules/registry.py", line 90, in new
    odoo.modules.load_modules(registry, force_demo, status, update_module)
  File "/home/odoo/src/odoo/odoo/modules/loading.py", line 487, in load_modules
    processed_modules += load_marked_modules(cr, graph,
  File "/home/odoo/src/odoo/odoo/modules/loading.py", line 371, in load_marked_modules
    loaded, processed = load_module_graph(
  File "/home/odoo/src/odoo/odoo/modules/loading.py", line 206, in load_module_graph
    registry.setup_models(cr)
  File "/home/odoo/src/odoo/odoo/modules/registry.py", line 297, in setup_models
    model._setup_fields()
  File "/home/odoo/src/odoo/odoo/models.py", line 2803, in _setup_fields
    field.setup(self)
  File "/home/odoo/src/odoo/odoo/fields.py", line 538, in setup
    self.setup_nonrelated(model)
  File "/home/odoo/src/odoo/odoo/fields.py", line 2543, in setup_nonrelated
    assert self.selection is not None, "Field %s without selection" % self
AssertionError: Field event.event.state without selection

The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
    RPCError@https://samadeva-oerp-brstaging-8109207.dev.odoo.com/web/assets/83758-b7a4b7b/web.assets_backend.min.js:973:274
    makeErrorFromResponse@https://samadeva-oerp-brstaging-8109207.dev.odoo.com/web/assets/83758-b7a4b7b/web.assets_backend.min.js:977:163
    jsonrpc/promise</<@https://samadeva-oerp-brstaging-8109207.dev.odoo.com/web/assets/83758-b7a4b7b/web.assets_backend.min.js:985:34

我注意到原来的模块 event.event 有一些变化(https://github.com/OCA/OpenUpgrade/blob/14.0/openupgrade_scripts/scripts/event/14.0.1.3/post-migration.py) SelectionFields event.event.state 已变成 Many2One-Field:event.event.stage_id


def map_event_event_states_to_stages(env):
    def _map_state_to_stage(state, stage_xmlid):
        query = """
            UPDATE event_event event SET stage_id = imd.res_id
            FROM ir_model_data imd
            WHERE imd.module = 'event' AND imd.name = %s AND event.state = %s"""
        openupgrade.logged_query(env.cr, query, (stage_xmlid, state))

    _map_state_to_stage("draft", "event_stage_new")
    _map_state_to_stage("done", "event_stage_done")
    _map_state_to_stage("cancel", "event_stage_cancelled")
    _map_state_to_stage("confirm", "event_stage_announced")

但是,即使在使用另一个新的自定义模块重新安装旧的 fieldSelection 之后,我也无法修复此错误:

class EventEvent(models.Model):
    _inherit = 'event.event'

    # TRY to fix error on install webtkev on v16: /odoo/fields.py", line 2543, in setup_nonrelated: AssertionError: Field event.event.state without selection
    state = fields.Selection([
        ('draft', 'Unconfirmed'), ('cancel', 'Cancelled'),
        ('confirm', 'Confirmed'), ('done', 'Done')],
        string='Status', default='draft', readonly=True, required=True, copy=False)

知道如何解决它吗?

migration upgrade odoo-16
© www.soinside.com 2019 - 2024. All rights reserved.