Search code examples
odoo-9

odoo ir.actions.server id not found


I'm new to Odoo. While trying to call a server action from a menuitem it can't find the model_id.

My view code:

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>
        <record model="ir.actions.server" id="open_calculator">
            <field name="name">Open Calculator</field>
            <field name="model_id" ref="calculator"/>
            <field name="type">ir.actions.server</field>
            <field name="state">code</field>
            <field name="code">
                <!--code-->
            </field>
        </record>

        <!-- Top menu item -->
        <menuitem name="Calculator" id="calculator.menu_root"
                  action="open_calculator"/>
    </data>
</openerp>

The error:

raise ValueError('External ID not found in the system: %s' % (xmlid)) ParseError: "External ID not found in the system: calculator.calculator" while parsing /home/administrador/Escritorio/calculator-test-project/calculator/views/views.xml:4, near

        <record model="ir.actions.server" id="open_calculator">
            <field name="name">Open Calculator</field>
            <field name="model_id" ref="calculator"/>
            <field name="type">ir.actions.server</field>
            <field name="state">code</field>
            <field name="code">
                <!--code-->
            </field>
        </record>

Model:

# -*- coding: utf-8 -*-

from openerp import models, fields, api, http


class Calculator(models.Model):
    _name = 'calculator'

What am I missing?


Solution

  • It appears that there is a convention you have to follow in model_id's ref attr. You have to add '_model' before your model name:

    <field name="model_id" ref="model_calculator"/>
    

    instead of:

    <field name="model_id" ref="calculator"/>
    

    or it won't work.

    Just as in this question