Creación de Modulos

Para iniciar vamos a crear un módulo para Tryton llamado HelloWorld, inicialmente solo va a tener un enlace en el menú principal para luego adicionarle algunas otras cosas. Se puede descar este módulo desde acá: helloWorld.tar.gz

Creación de HelloWorld

Cree una carpeta llamada hello en la carpeta modules de trytond

cd  /usr/local/tryton/trytond/trytond/modules/
mkdir hello

Dentro de allí se pondrá un archivo llamado _ _init_ _.py el cual tendrá los enlaces .py de nuestro módulo para ello poner en dicho archivo:

from hello import *

Se crea el archivo llamado _ _tryton_ _.py que tendrá la información:

{
    'name' : 'Hello World',
    'version' : '0.0.1',
    'author' : 'nickname',
    'email': 'correo@example.com',
    'website': 'http://www.tryton.org/',
    'description': 'Hello World con menus',
    'depends' : [
        'ir',
    ],
    'xml' : [
        'hello.xml',
    ],
    'translation': [
    ],
}

Adicionamos el archivo hello.py

from trytond.model import ModelView, ModelSQL, fields
class Hello(ModelSQL, ModelView):
    'HelloWorld'
    _name = 'hello.hello'
    _description = __doc__

Hello()

y por último en el archivo hello.xml colocamos:

<?xml version="1.0"?>

<tryton>
    <data>
        <menuitem name="Hello World" id="menu_hello_world" sequence="10"  icon="tryton-users"/>
    </data>
</tryton>

Con esto ya tenemos un primer módulo para poder importar, donde se muestra un menú inicial sin ninguna otra información.

Adición de un modelo y vistas a HelloWorld

Luego vamos a colocar un modelo y dos vistas para poder realizar algunas otras cosas al módulo. Para ello:

Editamos el archivo hello.py y adicionaremos dos campos a la clase Hello:

    name = fields.Char('Nombre')
    saludo = fields.Char('Saludo')

con ello nuestro archivo quedará

from trytond.model import ModelView, ModelSQL, fields
class Hello(ModelSQL, ModelView):
    'HelloWorld'
    _name = 'hello.hello'
    _description = __doc__
    name = fields.Char('Nombre')
    saludo = fields.Char('Saludo')

Hello()

Esto significará que se crearán dos campos en la base de datos, ambos de tipo Varchar o string.

Luego se edita el archivo hello.xml donde colocaremos los siguientes fragmentos, la explicación se muestra a continación, para mayor información revise la documentación de tryton la sección de Views:

Se adiciona la especificación para un modelo hello.hello, además se dice que la vista es de tipo tree y se mostrarán dos campos: nombre y saludo

        <!-- Vista para el Arbol del saludo-->
        <record model="ir.ui.view" id="hello_view_tree">
            <field name="model">hello.hello</field>
            <field name="type">tree</field>
            <field name="arch" type="xml">
                <![CDATA[
                <tree string="Hello World">
                    <field name="nombre" select="1"/>
                    <field name="saludo" select="1"/>
                </tree>
                ]]>
            </field>
        </record>

Se especifica una vista de tipo form con 2 labels y 2 fields para el modelo hello.hello

       <record model="ir.ui.view" id="hello_view_form">
            <field name="model">hello.hello</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
              <![CDATA[
              <form string="Hello">
                <label name="nombre"/>
                <field name="nombre"/>
                <label name="saludo"/>
                <field name="saludo"/> 
              </form>
              ]]>
            </field>
       </record>

Se adiciona el evento para el menú Hello World es importante tener en cuenta el id

     <!-- Vista para el menú principal y el evento -->
        <record model="ir.action.act_window" id="act_hello_world_form">
            <field name="name">Hello World</field>
            <field name="res_model">hello.hello</field>
            <field name="view_type">form</field>
        </record>

Con el id del evento para el menú y las dos vistas definidas arriba se adicionan dos fragmentos en los cuales se enlace el id de la ventana y la vista a donde se dirigirá, el campo view es el que indica a que vista se irá y el campo act_windows denota a que evento reaccionará la vista.

        <!-- Vista que conecta el form del arbol con la especificación-->
        <record model="ir.action.act_window.view" id="act_hello_form_view1">
            <field name="sequence" eval="10"/>
            <field name="view" ref="hello_view_tree"/>
            <field name="act_window" ref="act_hello_world_form"/>
        </record>

        <!-- Vista para la edición o el Form de hello-->
        <record model="ir.action.act_window.view" id="act_hello_form_view2">
            <field name="sequence" eval="20"/>
            <field name="view" ref="hello_view_form"/>
            <field name="act_window" ref="act_hello_world_form"/>
        </record>
        

Toda la trazabilidad de la aplicación se indica con el id de cada uno de los record del XML esto efectuará que sea reconocido para todo paso de cualquier evento y también dependencias o herencias.

Por último se adiciona un fragmento adicional para enlazar las vistas anteriores al menú:

        <menuitem parent="menu_hello_world" sequence="1"
            id="menu_hello_world_form" icon="tryton-list" action="act_hello_world_form"/>

Colcar un Menú de HelloWorld en el menú de administración

Para colocar un enlace en el menú de Administración basta con poner un menutem que tendra como parent ir.menu_administration para ello colocar:

        <menuitem parent="ir.menu_administration" action="act_hello_admin_form"
            id="menu_admin_hello_form"/>

Luego de ello se adiciona de la misma forma las vistas y las acciones de act_hello_admin_form

        <record model="ir.action.act_window" id="act_hello_admin_form">
            <field name="name">Hello Admin</field>
            <field name="res_model">hello.hello</field>
            <field name="view_type">form</field>
        </record>
        <record model="ir.action.act_window.view" id="act_hello_admin_form_view1">
            <field name="sequence" eval="10"/>
            <field name="view" ref="hello_view_tree"/>
            <field name="act_window" ref="act_hello_admin_form"/>
        </record>
        <record model="ir.action.act_window.view" id="act_hello_admin_form_view2">
            <field name="sequence" eval="20"/>
            <field name="view" ref="hello_view_form"/>
            <field name="act_window" ref="act_hello_admin_form"/>
        </record>

Esto indicará que se colocará en la administración las mismas vistas que se habían creado para el usuario, si se desea se pueden cambiar a alguna otra vista, o reportes según sea el caso.

OpTrWiki: Tryton/CreacionModulo (last edited 2009-08-15 16:44:40 by JuanfJaramillo)