Cómo crear vistas en Odoo con YAML

La documentación de Odoo 8.0 explica cómo crear ficheros de datos XML y CSV, pero se olvida de explicar los YAML, tal como hacía la antigua documentación de Odoo 6.0.

En cualquier caso, no he encontrado en ninguna parte cómo crear vistas usando YAML (técnicamente, combinándolo con XML), así que aquí va un ejemplo que enseguida entenderá todo aquel que esté acostumbrado a crear vistas en XML.

Esto sería el XML, extraído del fichero openacademy/views/openacademy.xml del tutorial:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <!-- Full id location:
             action="openacademy.course_list_action"
             It is not required when it is the same module -->

        <!-- session form view -->
        <record model="ir.ui.view" id="session_form_view">
            <field name="name">session.form</field>
            <field name="model">openacademy.session</field>
            <field name="arch" type="xml">
                <form string="Session Form">
                    <sheet>
                        <group>
                            <field name="name"/>
                            <field name="start_date"/>
                            <field name="duration"/>
                            <field name="seats"/>
                        </group>
                    </sheet>
                </form>
            </field>
        </record>

        <record model="ir.actions.act_window" id="session_list_action">
            <field name="name">Sessions</field>
            <field name="res_model">openacademy.session</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
        </record>

        <menuitem id="session_menu" name="Sessions"
                  parent="openacademy_menu"
                  action="session_list_action"/>
    </data>
</openerp>

Y esto es exactamente lo mismo en YAML (lo guardaríamos como openacademy/views/openacademy.yml):

# Full id location:
# action="openacademy.course_list_action"
# It is not required when it is the same module

# Session form view
- !record {model: ir.ui.view, id: session_form_view}
    name: session.form
    model: openacademy.session
    arch: |
        <form string="Session Form">
            <sheet>
                <group>
                    <field name="name"/>
                    <field name="start_date"/>
                    <field name="duration"/>
                    <field name="seats"/>
                </group>
            </sheet>
        </form>
    
- !record {model: ir.actions.act_window, id: session_list_action}
    name: Sessions
    res_model: openacademy.session
    view_type: form
    view_mode: tree,form

- !menuitem {id: session_menu, 
             name: Sessions
             parent: openacademy_menu
             action: session_list_action}

Como ves, al crear la vista al final hay que acabar usando XML, pero desde luego el resto del documento se beneficia bastante de la sintaxis YAML.

La pega es que será complicado que encuentres un editor de texto que te resalte la sintaxis de XML y YAML en el mismo documento. Quizá convenga usar XML para las vistas y YAML para lo demás.

Por cierto, los elementos tipo !record son constructores personalizados de Odoo (es decir, no es YAML estándar). Consulta el fichero yaml_tag.py para ver todos los que hay.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s