Notas sobre Módulos

Cuando se instala tryton, sin instalar ningún otro módulo, se instalan los módulos básicos:

ir

ir es el módulo más elemental, y contiene principalmente la información sobre los modelos y de las acciones. También tienen información de los menús con los grupos, dependencias entre los módulos, información de exportación "debe ser la información de cómo exportar la información", información de los lenguajes y traducciones, los módulos y sus dependencias, las secuencias (aún no entiendo para qué son las secuencias), información de los adjuntos (attachments), la información sobre las vistas del user interface ui_view y los árboles asociados . En el archivo tryton_ir2.dia, podrá ver las tablas relacionadas.

En tryton_ir.dia encontrará las mismas tablas con la relación existente entre la tabla de res_user y cada tabla. Cada tabla contiene dos relaciones con esta tabla de usuarios, una relación es la de creación, y la otra de escritura. Eje:

CREATE TABLE ir_sequence_type
(
  id serial NOT NULL,
  create_date timestamp(0) without time zone,
  write_date timestamp(0) without time zone,
  create_uid integer,
  write_uid integer,
...
  CONSTRAINT ir_sequence_type_create_uid_fkey FOREIGN KEY (create_uid)
      REFERENCES res_user (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL,
  CONSTRAINT ir_sequence_type_write_uid_fkey FOREIGN KEY (write_uid)
      REFERENCES res_user (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE SET NULL
)

Pero no hay que preocuparse por esto, pues Tryton lo maneja automáticamente en el momento de la creación de las tablas.

res

res contiene principalmente la información de los usuarios, los grupos de usuarios, y sus requisitos (requests),

en el archivo tryton_res.dia, se pueden ver el modelo entidad relación.

WorkFlow

El módulo de workflow, es un módulo que maneja todos los flujos de trabajo: actividades, eventos disparadores (triggers), instancias, transiciones e items.

Webdav

Ete módulo permite el intercambio de archivos usando el protocolo webdav, extensión de http: http://www.webdav.org/ o http://en.wikipedia.org/wiki/Webdav

Countries

Este módulo instala dos tablas, una de países country_country, que contiene 246 países, y country_subdivision que contiene las ciudades, departamentos, y en general las subdivisiones de cada país.

Todos los módulos definen las tablas en el archivo <modulo>.py, y son básicamente classes que Tryton convierte luego en tablas de la base de datos. Las clases siempre heredan las características de las clases ModelSQL y ModelView:

...
class Country(ModelSQL, ModelView):
    'Country'
    _name = 'country.country'
    _description = __doc__
    name = fields.Char('Name', required=True, translate=True,
           help='The full name of the country.', select=1)
    code = fields.Char('Code', size=2, select=1,
           help='The ISO country code in two chars.\n'
           'You can use this field for quick search.', required=True)
    subdivisions = fields.One2Many('country.subdivision',
            'country', 'Subdivisions')
...
class Subdivision(ModelSQL, ModelView):
    "Subdivision"
    _name = 'country.subdivision'
    _description = __doc__
    country = fields.Many2One('country.country', 'Country',
            required=True)
    name = fields.Char('Name', required=True, select=1)
    code = fields.Char('Code', required=True, select=1)
    type = fields.Selection([
        ('administration', 'Administration'),
        ('administrative area', 'Administrative area'),
...

Y los datos iniciales de estas tablas se encuentran en el archivo <modulo>.xml, ejemplo para country.xml:

...
        <!--
        Output of scripts/countries.py
        -->
...
        <record model="country.country" id="co">
            <field name="name">Colombia</field>
            <field name="code">CO</field>
        </record>
...
        <record model="country.subdivision" id="co-dc">
            <field name="name">Distrito Capital de Bogotá</field>
            <field name="code">CO-DC</field>
            <field name="type">capital district</field>
            <field name="country" ref="co"/>
        </record>

        <record model="country.subdivision" id="co-ama">
            <field name="name">Amazonas</field>
            <field name="code">CO-AMA</field>
            <field name="type">department</field>
            <field name="country" ref="co"/>
        </record>
...

Para este ejemplo en particular de country, hay un script que ayuda a complententar las ciudades, dicho scipt está en el directorio de modules/country/script, y para ejecutarlos se necesita instalar el paquete de python pycountry:

easy_install pycountry

Este script ayuda a generar de la base de datos los registros que vienen a continuación de la marca en el archivo xml de <!-- Output of scripts/countries.py -->.

El módulo de country, tiene básicamente dos vistas: una forma y un tree:

    ...
    <record model="ir.ui.view" id="country_view_form">
    ...
    <record model="ir.ui.view" id="country_view_tree">
    ...

Una acción con dos subacciones:

        ...
        <record model="ir.action.act_window" id="act_country_form">
            <field name="name">Countries</field>
            <field name="res_model">country.country</field>
            <field name="view_type">form</field>
        </record>
        <record model="ir.action.act_window.view" id="act_country_form_view1">
            <field name="sequence" eval="10"/>
            <field name="view" ref="country_view_tree"/>
            <field name="act_window" ref="act_country_form"/>
        </record>
        <record model="ir.action.act_window.view" id="act_country_form_view2">
            <field name="sequence" eval="20"/>
            <field name="view" ref="country_view_form"/>
            <field name="act_window" ref="act_country_form"/>
        </record>
        ....

Y un menu, que está directamente en el menú de Adminastración:

        <menuitem parent="ir.menu_administration" action="act_country_form"
            id="menu_country_form"/>

Este menú llama a la acción principal, y a su vez le pone el nombre de esta.

Menús y actuaciones de los módulos

Todo el módulos está definido en la interfase del usuario está definida en el archivo modulo.xml.

Menús

Los menús están definidos dentro del tag <data> en un tag menuitem, para el módulo de country es:

...
        <record model="ir.action.act_window" id="act_country_form">
            <field name="name">Countries</field>
            <field name="res_model">country.country</field>
            <field name="view_type">form</field>
...
        <menuitem parent="ir.menu_administration" action="act_country_form"
            id="menu_country_form"/>
...

Referencias

* http://www.tryton.org/doc/branches/1.0/tryton/doc/glossary.html * http://www.tryton.org/doc/branches/1.0/tryton/doc/usage.html * http://www.tryton.org/doc/branches/1.0/trytond/doc/views.html * http://www.tryton.org/doc/branches/1.0/trytond/doc/models.html

OpTrWiki: Tryton/NotasModulos (last edited 2009-04-13 01:59:51 by JuanfJaramillo)