introducción a la programación en tryton

31
Introducción a la programación en Tryton

Upload: nan-tic

Post on 25-Jan-2017

168 views

Category:

Business


1 download

TRANSCRIPT

Introducción a la programación en Tryton

¿Qué es Tryton?

● Es una plataforma de aplicaciones de propósito general de alto nivel

● Publicada bajo la licencia GPL-3● Escrita en Python● Utiliza PostgreSQL como motor de base de datos.● Es la base fundamental de una solución empresarial

completa que proporciona modularidad, escalabilidad y seguridad.

¿Qué es Tryton?

Arquitectura cliente – servidor de 3 niveles

¿Qué es Tryton?

Cliente escritorioGtk

Navegador web

Servidor Tryton

PostgreSQL

gUnicorn

SAO

Comunidad

www.tryton.org/es/communidad.html

Comunidad

Documentación

http://doc.tryton.org/4.0/

Comunidad

Estructura básica de un módulo

nombre_del_modulo

    |_ doc

    |_ locale

    |_ tests

    |_ view

        party_form.xml

        party_tree.xml

    __init__.py

    party.py

    party.xml

    tryton.cfg

Estructura básica de un módulo

Contenido estándar del fichero tryton.cfg

[tryton]

version=3.8.0

depends:

    ir

    res

xml:

    party.xml

Estructura básica de un módulo

Arquitectura Modelo, Vista, Controlador

Arquitectura Modelo, Vista, Controlador

Modelo: Modelos Tryton

Clases Python mapeadas a tablas PostgreSQL

Creación/actualización automática tablas

Los campos se definen como atributos de la clase

Arquitectura Modelo, Vista, Controlador

Modelo: Modelos Trytonfrom trytond.model import ModelView, ModelSQL, fields

__all__ = ['Party']

class Party(ModelSQL, ModelView):

    "Party"

    __name__ = "party.party"

    name = fields.Char('Name')

    code = fields.Char('Code')

Fichero python (party.py)

Arquitectura Modelo, Vista, Controlador

Modelo: Modelos Trytonfrom trytond.pool import Pool

from .party import *

def register():

    Pool.register(

        Party,

        module='party', type_='model')

La clase se debe registrar en el pool.

Fichero __init__.py

Arquitectura Modelo, Vista, Controlador

Modelo: Campos Tryton• Booleano

• Entero, flotante, numérico

• Carácter, texto, selección

• Fecha, fecha y hora, hora

• Referencia, muchos a uno, uno a muchos, uno a

uno, muchos a muchos

• Funcionales, propiedades, diccionario, binario

Arquitectura Modelo, Vista, Controlador

Modelo: Herencia• Tryton permite realizar herencia de clases para

ampliar las funcionalidades básicas de los modelos

estandard

Arquitectura Modelo, Vista, Controlador

Modelo: Herenciafrom trytond.model import fieldsfrom trytond.pool import Poolmetafrom trytond.pyson import Eval

__all__ = ['Party']

class Party:    __metaclass__ = PoolMeta    __name__ = "party.party"    active = fields.Boolean('Active', select=True)    addresses = fields.One2Many('party.address', 'party',        'Addresses', states={            'readonly': ~Eval('active', True),            }, depends=['active'])

Arquitectura Modelo, Vista, Controlador

Vista: Archivos XML

Las vistas se utilizan para mostrar los registros a los

usuarios.

Existen diferentes tipos de vistas: listas, árboles,

formularios, gráficos, calendario,...

Las vistas se abren mediante acciones, y se guardan

en archivos XML dentro del directorio view

Arquitectura Modelo, Vista, Controlador

Vista: Archivos XML

Las vistas se definen en archivos XML junto con las

acciones, los menús, los permisos, datos, etc.

(fichero party.xml)

<record model="ir.ui.view" id="party_view_form">

    <field name="model">party.party</field>

    <field name="type">form</field>

    <field name="name">party_form</field>

</record>

Arquitectura Modelo, Vista, Controlador

Vista: Archivos XMLVista de tipo formulario (fichero party_form.xml en el directorio view)

<form string="Party">    <label name="name"/>    <field name="name"/>    <notebook colspan="6">        <page string="General">            <label name="code"/>            <field name="code"/>        </page>    </notebook></form>

Arquitectura Modelo, Vista, Controlador

Vista: Archivos XMLVista de tipo lista (fichero party_tree.xml en el directorio view)

<tree string="Taxes" sequence="sequence">    <field name="name"/>    <field name="code"/></tree>

Arquitectura Modelo, Vista, Controlador

Vista: extensión de las vistas

Las vistas pueden extenderse mediante herencia

<record model="ir.ui.view" id="party_view_form">

    <field name="model">party.party</field>

    <field name="inherit" ref="party.party_view_form"/>

    <field name="name">party_form</field>

</record>

Arquitectura Modelo, Vista, Controlador

Vista: extensión de las vistas<data>    <xpath expr="/form/notebook/page/field[@name='code']"             position="after">        <label name="active"/>        <field name="active"/>        <label name="addresses"/>        <field name="addresses"/>    </xpath></data>

Arquitectura Modelo, Vista, Controlador

Controlador: Código Python● Lógica: Validación de datos, cálculos, …● Flujos de trabajo: Estados, transiciones, roles, …● Asistentes: Para instalar módulos, realizar

acciones, informes, ...

Arquitectura Modelo, Vista, Controlador

Controlador: Métodos estáticosMétodos que se aplican a todos los registros del modelo.@staticmethoddef default_active():    return True

Arquitectura Modelo, Vista, Controlador

Controlador: Métodos de claseMétodos que se aplican a un conjunto de registros del modelo.@classmethoddef copy(cls, parties, default=None):    if default is None:        default = {}    default = default.copy()    default['code'] = None    return super(Party, cls).copy(parties, default=default)

Arquitectura Modelo, Vista, Controlador

Controlador: Métodos de instanciaMétodos que se aplican a un único registro del modelo.

def get_rec_name(self, name):    code = self.code    if code:        return u"[%s] %s" % (code, self.name)    return self.name

Arquitectura Modelo, Vista, Controlador

http://www.NaN-tic.com

Jesús Martín Jimé[email protected]