Skip to content

[14.0] openupgrade_framework: Crash on certain view validations #3060

@pedrobaeza

Description

@pedrobaeza

Steps to reproduce the problem:

  • Have an old view with a tree with colors attribute.
  • Remove such view in v14 code.
  • Perform the migration to v14.

As a result, the migration process is aborted with this error:

Details
Traceback (most recent call last):
  File "/opt/odoo/custom/src/odoo/odoo/tools/convert.py", line 677, in _tag_root
    f(rec)
  File "/opt/odoo/custom/src/odoo/odoo/tools/convert.py", line 580, in _tag_record
    record = model._load_records([data], self.mode == 'update')
  File "/opt/odoo/custom/src/odoo/odoo/models.py", line 4209, in _load_records
    data['record']._load_records_write(data['values'])
  File "/opt/odoo/custom/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 1841, in _load_records_write
    super(View, self)._load_records_write(values)
  File "/opt/odoo/custom/src/odoo/odoo/models.py", line 4146, in _load_records_write
    self.write(values)
  File "/opt/odoo/auto/addons/website/models/theme_models.py", line 267, in write
    res = super(IrUiView, other_views).write(vals)
  File "/opt/odoo/auto/addons/website/models/ir_ui_view.py", line 68, in write
    return super(View, self).write(vals)
  File "/opt/odoo/custom/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 500, in write
    res = super(View, self).write(self._compute_defaults(vals))
  File "/opt/odoo/custom/src/odoo/odoo/models.py", line 3704, in write
    fields[0].determine_inverse(real_recs)
  File "/opt/odoo/custom/src/odoo/odoo/fields.py", line 1187, in determine_inverse
    getattr(records, self.inverse)()
  File "/opt/odoo/custom/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 300, in _inverse_arch
    view.write(data)
  File "/opt/odoo/auto/addons/website/models/theme_models.py", line 267, in write
    res = super(IrUiView, other_views).write(vals)
  File "/opt/odoo/auto/addons/website/models/ir_ui_view.py", line 68, in write
    return super(View, self).write(vals)
  File "/opt/odoo/custom/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 500, in write
    res = super(View, self).write(self._compute_defaults(vals))
  File "/opt/odoo/custom/src/odoo/odoo/models.py", line 3694, in write
    real_recs._validate_fields(vals, inverse_fields)
  File "/opt/odoo/custom/src/odoo/odoo/models.py", line 1266, in _validate_fields
    check(self)
  File "/opt/odoo/auto/addons/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_ui_view.py", line 17, in _check_xml
    return View._check_xml._original_method(self)
  File "/opt/odoo/custom/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 401, in _check_xml
    raise ValidationError(_(
odoo.exceptions.ValidationError: Vista no disponible ... (...) definición en ....xml

As the validation is performed before the cleaning of the views, the check is performed no matter if it's going to be removed later. Specifically, this is the exception risen:

https://github.com/odoo/odoo/blob/1ff58be8f19becb3436348ed6b44fe69247cd057/odoo/addons/base/models/ir_ui_view.py#L401

Current workaround:

  • Remove by hand the view in DB (DELETE FROM ir_ui_view WHERE id=...) before performing the upgrade.

@Tecnativa

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions