Ahrimann Steiner
Ahrimann Steiner

Reputation: 1314

Odoo migration to v16: Error for standard wizard

When i try to install my -originally in v13 developed custom module- in Odoo v16-apps, i got an error, even for an empty wizard (with a structure which is identical the other wizards definitions found in the official odoo addons)!:

  <record id="my_custom_wizard_form" model="ir.ui.view">
    <field name="name">my.custom.wizard.form</field>
    <field name="model">my.custom.wizard</field>
    <field name='arch' type='xml'>
        <form string='My Wizard'>
           <sheet>
           </sheet>
           <footer>
           </footer>
        </form>
    </field>
  </record>

  <record id="act_my_custom_wizard" model="ir.actions.act_window">
               <field name="name">My Custom Wizard</field>
               <field name="res_model">my.custom.wizard</field>
               <field name="view_mode">form</field>
               <field name="target">new</field>
              <field name="view_id" ref="my_custom_wizard_form"/>
                <!--field name="binding_model_id" eval="False"/-->
  </record>

  <menuitem id="menu_my_custom_wizard" action="act_my_custom_wizard" parent="my_configration" sequence="2"/>

But, even if i have tried to reduce my wizard definition to the minimalist content, i keep on getting this error on install:

**File "/home/odoo/src/odoo/odoo/tools/convert.py", line 711, in _tag_root
    raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /home/odoo/src/user/my_custom_module_zsb/wizard/my_custom_wizard.xml:3, somewhere inside**

Traceback:

Failed to load registry
Traceback (most recent call last):
  File "/home/odoo/src/odoo/odoo/tools/convert.py", line 698, in _tag_root
    f(rec)
  File "/home/odoo/src/odoo/odoo/tools/convert.py", line 599, in _tag_record
    record = model._load_records([data], self.mode == 'update')
  File "/home/odoo/src/odoo/odoo/models.py", line 4364, in _load_records
    data['record']._load_records_write(data['values'])
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 2218, in _load_records_write
    super(View, self)._load_records_write(values)
  File "/home/odoo/src/odoo/odoo/models.py", line 4295, in _load_records_write
    self.write(values)
  File "/home/odoo/src/odoo/addons/website/models/theme_models.py", line 385, in write
    res = super(IrUiView, other_views).write(vals)
  File "/home/odoo/src/odoo/addons/website/models/ir_ui_view.py", line 93, in write
    return super(View, self).write(vals)
  File "/home/odoo/src/enterprise/web_studio/models/studio_mixin.py", line 33, in write
    res = super(StudioMixin, self).write(vals)
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 573, in write
    res = super(View, self).write(self._compute_defaults(vals))
  File "/home/odoo/src/odoo/odoo/models.py", line 3787, in write
    fields[0].determine_inverse(real_recs)
  File "/home/odoo/src/odoo/odoo/fields.py", line 1396, in determine_inverse
    determine(self.inverse, records)
  File "/home/odoo/src/odoo/odoo/fields.py", line 97, in determine
    return needle(*args)
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 340, in _inverse_arch
    view.write(data)
  File "/home/odoo/src/odoo/addons/website/models/theme_models.py", line 385, in write
    res = super(IrUiView, other_views).write(vals)
  File "/home/odoo/src/odoo/addons/website/models/ir_ui_view.py", line 93, in write
    return super(View, self).write(vals)
  File "/home/odoo/src/enterprise/web_studio/models/studio_mixin.py", line 33, in write
    res = super(StudioMixin, self).write(vals)
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_ui_view.py", line 573, in write
    res = super(View, self).write(self._compute_defaults(vals))
  File "/home/odoo/src/odoo/odoo/models.py", line 3755, in write
    field.write(self, value)
  File "/home/odoo/src/odoo/odoo/fields.py", line 1815, in write
    text2terms[self.get_text_content(term)].append(term)
  File "/home/odoo/src/odoo/odoo/fields.py", line 1681, in get_text_content
    return func(term)
  File "/home/odoo/src/odoo/odoo/tools/translate.py", line 361, in get_text_content
    content = html.fromstring(term).text_content()
  File "/usr/lib/python3/dist-packages/lxml/html/__init__.py", line 875, in fromstring
    doc = document_fromstring(html, parser=parser, base_url=base_url, **kw)
  File "/usr/lib/python3/dist-packages/lxml/html/__init__.py", line 763, in document_fromstring
    raise etree.ParserError(
lxml.etree.ParserError: Document is empty

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

Traceback (most recent call last):
  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 484, in load_modules
    processed_modules += load_marked_modules(cr, graph,
  File "/home/odoo/src/odoo/odoo/modules/loading.py", line 372, in load_marked_modules
    loaded, processed = load_module_graph(
  File "/home/odoo/src/odoo/odoo/modules/loading.py", line 231, in load_module_graph
    load_data(cr, idref, mode, kind='data', package=package)
  File "/home/odoo/src/odoo/odoo/modules/loading.py", line 71, in load_data
    tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
  File "/home/odoo/src/odoo/odoo/tools/convert.py", line 763, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate)
  File "/home/odoo/src/odoo/odoo/tools/convert.py", line 829, in convert_xml_import
    obj.parse(doc.getroot())
  File "/home/odoo/src/odoo/odoo/tools/convert.py", line 749, in parse
    self._tag_root(de)
  File "/home/odoo/src/odoo/odoo/tools/convert.py", line 711, in _tag_root
    raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
odoo.tools.convert.ParseError: while parsing /home/odoo/src/user/my_custom_module_zsb/wizard/my_custom_wizard.xml:3, somewhere inside
  <record id="my_custom_wizard_form" model="ir.ui.view">
    <field name="name">my.custom.wizard.form</field>
    <field name="model">my.custom.wizard</field>
    <field name='arch' type='xml'>
        <form string='My Wizard'>
             <sheet>
            </sheet>
           <footer>
           </footer>
        </form>
    </field>
  </record>

Here is the python def to call the wizard (located in another model)

class mymodel(models.Model):
    _name = "my.model"
    #...
    #...
    def open_brevo_import_wizard(self):
        return {
            'type': 'ir.actions.act_window',
            'res_model': 'my.custom.wizard',
            'view_mode': 'form',
            'target': 'new',
            }

There is no Error when i comment the button contained in another model-view:

<record id="myothermodel_list_view_form" model="ir.ui.view">
        <field name="name">list_view_form</field>
        <field name="model">myothermodel.list</field>
        <field name="type">form</field>
        <field name="arch" type="xml">
            <form string="List">
                <sheet>
                  <group>
                    <button type="object" name="open_mycustom_wizard" string="open mycuston wizard" class="oe_button oe_form_button oe_highlight"/>
                </group>
             </sheet>
            </form>
         </field>
</record>

Upvotes: 0

Views: 124

Answers (1)

aekis.dev
aekis.dev

Reputation: 2764

I think it's because you didn't put a content inside the form view

Upvotes: 0

Related Questions