Hello.
In your code you reference a users_ids field that does not exist in the original view, view_task_form2 of project in odoo v13.
Here is the original Odoo code updated today in the v13 branch: https://github.com/odoo/odoo/blob/13.0/addons/project/views/project_views.xml
And in your module you reference several times a user_ids field that does not exist in that view. Attach
This is the error trace when trying to install the app:
Odoo Server Error
Traceback (most recent call last):
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 671, in apply_inheritance_specs
pre_locate=pre_locate)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/template_inheritance.py", line 230, in apply_inheritance_specs
_("Element '%s' cannot be located in parent view") % tag
ValueError: El elemento '<xpath expr="//field[@name='user_ids']">' no puede ser localizado en la vista padre
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 712, in parse
self._tag_root(de)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 674, in _tag_root
f(rec)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 674, in _tag_root
f(rec)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 577, in tag_record
record = model.load_records([data], self.mode == 'update')
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/models.py", line 4176, in load_records
records = self.load_records_create([data['values'] for data in to_create])
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/models.py", line 4090, in _load_records_create
return self.create(values)
File "<decorator-gen-33>", line 2, in create
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/api.py", line 336, in _model_create_multi
return create(self, arg)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 475, in create
return super(View, self).create(vals_list)
File "<decorator-gen-3>", line 2, in create
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/api.py", line 336, in _model_create_multi
return create(self, arg)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/models.py", line 3851, in create
fields[0].determine_inverse(batch_recs)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/fields.py", line 1154, in determine_inverse
getattr(records, self.inverse)()
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 299, in inverse_arch
view.write(data)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 493, in write
res = super(View, self).write(self.compute_defaults(vals))
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/models.py", line 3640, in write
real_recs._validate_fields(vals, inverse_fields)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/models.py", line 1212, in _validate_fields
check(self)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 387, in _check_xml
view_def = view.read_combined(['arch'])
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 745, in read_combined
arch = self.apply_view_inheritance(arch_tree, root.id, self.model)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 694, in apply_view_inheritance
source = self.apply_inheritance_specs(source, specs_tree, view_id)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 673, in apply_inheritance_specs
self.raise_view_error(str(e), inherit_id)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 614, in raise_view_error
raise ValueError(message)
ValueError: El elemento '<xpath expr="//field[@name='user_ids']">' no puede ser localizado en la vista padre
Contexto del error:
Vista project_task_view_form
[view_id: 596, xml_id: n/a, model: project.task, parent_id: 550]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/http.py", line 624, in handle_exception
return super(JsonRequest, self).handle_exception(exception)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/http.py", line 310, in handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/pycompat.py", line 14, in reraise
raise value
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/http.py", line 669, in dispatch
result = self.call_function(**self.params)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/http.py", line 350, in call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/service/model.py", line 94, in wrapper
return f(dbname, args, **kwargs)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/http.py", line 339, in checked_call
result = self.endpoint(a, **kw)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/http.py", line 915, in call
return self.method(args, **kw)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/http.py", line 515, in response_wrap
response = f(args, **kw)
File "/opt/odoo/odoo_13_test/src/enterprise/web/controllers/main.py", line 1343, in call_button
action = self.call_kw(model, method, args, kwargs)
File "/opt/odoo/odoo_13_test/src/enterprise/web/controllers/main.py", line 1331, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/api.py", line 387, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/api.py", line 374, in call_kw_multi
result = method(recs, *args, **kwargs)
File "<decorator-gen-61>", line 2, in button_immediate_install
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_module.py", line 73, in check_and_log
return method(self, *args, **kwargs)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_module.py", line 464, in button_immediate_install
return self.button_immediate_function(type(self).button_install)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_module.py", line 574, in button_immediate_function
modules.registry.Registry.new(self.cr.dbname, update_module=True)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/modules/registry.py", line 86, in new
odoo.modules.load_modules(registry.db, force_demo, status, update_module)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/modules/loading.py", line 428, in load_modules
loaded_modules, update_module, models_to_check)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/modules/loading.py", line 315, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/modules/loading.py", line 225, in load_module_graph
load_data(cr, idref, mode, kind='data', package=package, report=report)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/modules/loading.py", line 68, in load_data
tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind, report)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 736, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 803, in convert_xml_import
obj.parse(doc.getroot())
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 721, in parse
exc_info[2]
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/pycompat.py", line 13, in reraise
raise value.with_traceback(tb)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 712, in parse
self.tag_root(de)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 674, in _tag_root
f(rec)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 674, in _tag_root
f(rec)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/tools/convert.py", line 577, in tag_record
record = model.load_records([data], self.mode == 'update')
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/models.py", line 4176, in load_records
records = self.load_records_create([data['values'] for data in to_create])
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/models.py", line 4090, in _load_records_create
return self.create(values)
File "<decorator-gen-33>", line 2, in create
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/api.py", line 336, in _model_create_multi
return create(self, arg)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 475, in create
return super(View, self).create(vals_list)
File "<decorator-gen-3>", line 2, in create
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/api.py", line 336, in _model_create_multi
return create(self, arg)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/models.py", line 3851, in create
fields[0].determine_inverse(batch_recs)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/fields.py", line 1154, in determine_inverse
getattr(records, self.inverse)()
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 299, in inverse_arch
view.write(data)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 493, in write
res = super(View, self).write(self.compute_defaults(vals))
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/models.py", line 3640, in write
real_recs._validate_fields(vals, inverse_fields)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/models.py", line 1212, in _validate_fields
check(self)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 387, in _check_xml
view_def = view.read_combined(['arch'])
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 745, in read_combined
arch = self.apply_view_inheritance(arch_tree, root.id, self.model)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 694, in apply_view_inheritance
source = self.apply_inheritance_specs(source, specs_tree, view_id)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 673, in apply_inheritance_specs
self.raise_view_error(str(e), inherit_id)
File "/opt/odoo/odoo_13/src/oca/OCB/odoo/addons/base/models/ir_ui_view.py", line 614, in raise_view_error
raise ValueError(message)
odoo.tools.convert.ParseError: "El elemento '<xpath expr="//field[@name='user_ids']">' no puede ser localizado en la vista padre
Contexto del error:
Vista project_task_view_form
[view_id: 596, xml_id: n/a, model: project.task, parent_id: 550]" while parsing /opt/odoo/odoo_13_test/src/external/bryntum_gantt_enterprise/views/project_views.xml:1, near
<odoo>
<data>
<record id="bryntum_gantt__view_form" model="ir.ui.view">
<field name="name">bryntum_gantt_view_form</field>
<field name="model">project.task</field>
<field name="arch" type="xml">
<BryntumGantt/>
</field>
</record>
<record id="open_gantt_pro" model="ir.actions.act_window">
<field name="name">Gantt View Pro</field>
<field name="res_model">project.task</field>
<field name="view_mode">BryntumGantt,map</field>
</record>
<menuitem name="Gantt View Pro" id="menu_bryntum_gantt_pro" parent="project.menu_main_pm" sequence="3" action="open_gantt_pro" groups="project.group_project_user,project.group_project_manager,base.group_user"/>
<record id="project.act_project_project_2_project_task_all" model="ir.actions.act_window">
<field name="view_mode">kanban,tree,form,calendar,pivot,graph,activity,BryntumGantt,map</field>
</record>
<record id="project.action_view_task" model="ir.actions.act_window">
<field name="view_mode">kanban,tree,form,calendar,pivot,graph,BryntumGantt,activity</field>
</record>
<record id="project_task_view_form" model="ir.ui.view">
<field name="name">project_task_view_form</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2"/>
<field name="arch" type="xml">
<data><xpath expr="//field[@name='tag_ids']" position="after">
<field name="planned_date_begin" attrs="{'required': [('planned_date_end', '!=', False)]}"/>
<field name="planned_date_end" attrs="{'required': [('planned_date_begin', '!=', False)]}"/>
<field name="percent_done"/>
<field name="effort"/>
<field name="scheduling_mode"/>
<field name="constraint_type"/>
<field name="constraint_date" widget="date"/>
<field name="effort_driven"/>
<field name="manually_scheduled"/>
</xpath>
<xpath expr="//field[@name='user_ids']" position="after">
<field name="employee_ids" class="o_task_user_field" options="{'no_open': True, 'no_quick_create': True}" widget="many2many_avatar_user"/>
</xpath>
<xpath expr="//field[@name='user_ids']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
</data></field>
</record>
<record id="project_task_view_quick_create_form" model="ir.ui.view">
<field name="name">project_task_view_quick_create_form</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.quick_create_task_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='user_ids']" position="replace">
<field name="employee_ids" class="o_task_user_field" options="{'no_open': True, 'no_quick_create': True}" widget="many2many_avatar_user"/>
</xpath>
</field>
</record>
<record id="project_task_view_tree" model="ir.ui.view">
<field name="name">project_task_view_tree</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_tree2"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='user_ids']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//field[@name='company_id']" position="before">
<field name="employee_ids" optional="show" widget="many2many_avatar_user"/>
<field name="percent_done"/>
<field name="assigned_ids" widget="many2many_tags"/>
</xpath>
</field>
</record>
<record id="project_task_view_search" model="ir.ui.view">
<field name="name">project_task_view_search</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_search_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='user_ids']" position="after">
<field name="employee_ids" filter_domain="[('employee_ids.name', 'ilike', self)]"/>
</xpath>
<xpath expr="//field[@name='user_ids']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
</field>
</record>
<record id="project_task_view_kanban" model="ir.ui.view">
<field name="name">project_task_view_kanban</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_kanban"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='user_ids']" position="replace">
<field name="employee_ids"/>
</xpath>
<xpath expr="//kanban//div[@class='oe_kanban_bottom_right']" position="replace">
<div class="class='oe_kanban_bottom_right'">
<t t-if="record.employee_ids.raw_value">
<field name="employee_ids" widget="many2many_avatar_user"/>
</t>
</div>
</xpath>
</field>
</record>
<record id="project_task_view_pivot" model="ir.ui.view">
<field name="name">project_task_view_pivot</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_project_task_pivot_inherit"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='user_ids']" position="replace">
<field name="employee_ids" type="row"/>
</xpath>
</field>
</record>
<record id="view_edit_project_inherit_form" model="ir.ui.view">
<field name="name">project.project.view.inherit</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.edit_project"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('oe_title')]" position="after">
<div name="project_start_date">
<div>
<label for="project_start_date" class="oe_inline" string="Project start:"/>
<field name="project_start_date" class="oe_inline oe_input_align"/>
</div>
</div>
</xpath>
<xpath expr="//page[@name='settings']" position="inside">
<div class="row mt16 o_settings_container" id="gantt_view_pro_management">
<div id="use_collaborative_pad" class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="bryntum_auto_scheduling"/>
</div>
<div class="o_setting_right_pane" name="pad_project_right_pane">
<label for="bryntum_auto_scheduling"/>
<div class="text-muted">
Auto schedule tasks
</div>
</div>
</div>
<div id="use_collaborative_pad" class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="bryntum_user_assignment"/>
</div>
<div class="o_setting_right_pane" name="pad_project_right_pane">
<label for="bryntum_user_assignment"/>
<div class="text-muted">
Use user table as resource base
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</data>
</odoo>
Thank You.
Kind Regards.