OCA / operating-unit

Manage Operating Units in Odoo
GNU Affero General Public License v3.0
72 stars 237 forks source link

[14.0][IMP] operating_unit: better res.user view inheriting #639

Closed GSLabIt closed 9 months ago

GSLabIt commented 9 months ago

Description of the problem or feature or link to the task

From time to time an error occur when updating module. group tag is not found in base.view_users_form.

Error:

2023-11-09 02:30:06,944 3978828 ERROR op-unit click_odoo.env_options: exception
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 677, in _tag_root
    f(rec)
  File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 580, in _tag_record
    record = model._load_records([data], self.mode == 'update')
  File "/usr/lib/python3/dist-packages/odoo/models.py", line 4230, in _load_records
    data['record']._load_records_write(data['values'])
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 1858, in _load_records_write
    super(View, self)._load_records_write(values)
  File "/usr/lib/python3/dist-packages/odoo/models.py", line 4154, in _load_records_write
    self.write(values)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 507, in write
    res = super(View, self).write(self._compute_defaults(vals))
  File "/usr/lib/python3/dist-packages/odoo/models.py", line 3713, in write
    fields[0].determine_inverse(real_recs)
  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1207, in determine_inverse
    determine(self.inverse, records)
  File "/usr/lib/python3/dist-packages/odoo/fields.py", line 82, in determine
    return needle(*args)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 307, in _inverse_arch
    view.write(data)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 507, in write
    res = super(View, self).write(self._compute_defaults(vals))
  File "/usr/lib/python3/dist-packages/odoo/models.py", line 3703, in write
    real_recs._validate_fields(vals, inverse_fields)
  File "/usr/lib/python3/dist-packages/odoo/models.py", line 1266, in _validate_fields
    check(self)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 415, in _check_xml
    raise ValidationError(_(
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 398, in _check_xml
    view.postprocess_and_fields(view_doc, validate=True)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 857, in postprocess_and_fields
    arch, name_manager = self._postprocess_view(node, model, validate=validate)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 869, in _postprocess_view
    self.postprocess(node, [], editable, name_manager)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 969, in postprocess
    self.postprocess(child, current_node_path, node_info['editable'], name_manager)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 969, in postprocess
    self.postprocess(child, current_node_path, node_info['editable'], name_manager)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 969, in postprocess
    self.postprocess(child, current_node_path, node_info['editable'], name_manager)
  [Previous line repeated 2 more times]
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 960, in postprocess
    validator(node, name_manager, node_info)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 1096, in _validate_tag_field
    self.handle_view_error(msg)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_ui_view.py", line 680, in handle_view_error
    raise ValueError(formatted_message).with_traceback(from_traceback) from from_exception
odoo.exceptions.ValidationError: Errore nella convalida della vista:

field "in_group_64" not found on model "res.users"

View name: res.users.form
Error context:
 view: ir.ui.view(1355,)
 xmlid: view_users_form
 view.model: res.users
 view.parent: ir.ui.view(154,)
 file: /opt/odoo/custom/oca/operating-unit/operating_unit/view/res_users_view.xml

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/click_odoo/env_options.py", line 207, in _invoke
    with self.environment_manager(
  File "/usr/lib/python3.8/contextlib.py", line 113, in __enter__
    return next(self.gen)
  File "/usr/local/lib/python3.8/dist-packages/click_odoo_contrib/update.py", line 296, in OdooEnvironmentWithUpdate
    _update_db(
  File "/usr/local/lib/python3.8/dist-packages/click_odoo_contrib/update.py", line 267, in _update_db
    _update_db_nolock(
  File "/usr/local/lib/python3.8/dist-packages/click_odoo_contrib/update.py", line 245, in _update_db_nolock
    odoo.modules.registry.Registry.new(database, update_module=True)
  File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 89, in new
    odoo.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 455, in load_modules
    processed_modules += load_marked_modules(cr, graph,
  File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 347, in load_marked_modules
    loaded, processed = load_module_graph(
  File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 222, in load_module_graph
    load_data(cr, idref, mode, kind='data', package=package)
  File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 69, in load_data
    tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
  File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 733, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate)
  File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 799, in convert_xml_import
    obj.parse(doc.getroot())
  File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 719, in parse
    self._tag_root(de)
  File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 681, in _tag_root
    raise ParseError('while parsing %s:%s, near\n%s' % (
odoo.tools.convert.ParseError: while parsing /opt/odoo/custom/oca/operating-unit/operating_unit/view/res_users_view.xml:3, near
<record id="view_users_form" model="ir.ui.view">
        <field name="name">res.users.form</field>
        <field name="model">res.users</field>
        <field name="inherit_id" ref="base.view_users_form"/>
        <field name="arch" type="xml">
            <xpath expr="//page[@name='access_rights']/group[1]" position="after">
                <group string="Operating Units">
                    <field name="operating_unit_ids" groups="operating_unit.group_multi_operating_unit" widget="many2many_tags"/>

                    <field name="default_operating_unit_id" domain="[('id','in',operating_unit_ids)]"/>
                </group>
            </xpath>
        </field>
    </record>

Current behavior prior to this PR:

Error is raised.

Desired behavior after this PR:

Error should not be raised any more.

francesco-ooops commented 9 months ago

@OCA/accounting-maintainers @AaronHForgeFlow any opinion on this?

AaronHForgeFlow commented 9 months ago

Was that an update of the base Odoo view? It is rare that the most basic view in operating units failed all this time.

AaronHForgeFlow commented 9 months ago

Tried to reproduce in runbot but was updating fine modules base and rma: http://oca-operating-unit-14-0-e54e62171f04.runboat.odoo-community.org/web#action=35&model=ir.module.module&view_type=kanban&cids=&menu_id=5

francesco-ooops commented 9 months ago

thank you @AaronHForgeFlow

@GSLabIt can we close this one?

GSLabIt commented 9 months ago

Tried to reproduce in runbot but was updating fine modules base and rma: http://oca-operating-unit-14-0-e54e62171f04.runboat.odoo-community.org/web#action=35&model=ir.module.module&view_type=kanban&cids=&menu_id=5

yeah, issue was related to how odoo load the view, closing