Tryton es una plataforma de aplicaciones de propósito general de alto nivel escrita en Python que utiliza PostgreSQL como motor de base de datos y sigue una arquitectura Modelo Vista Controlador. Tryton proporciona una solución empresarial completa a través de módulos que definen modelos, vistas y lógica de negocio en Python y XML.
3. ● 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?
4. Arquitectura cliente – servidor de 3 niveles
¿Qué es Tryton?
Cliente escritorio
Gtk
Navegador
web
Servidor Tryton
PostgreSQL
gUnicorn
SAO
14. 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
17. 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
18. Modelo: Herencia
• Tryton permite realizar herencia de clases para
ampliar las funcionalidades básicas de los modelos
estandard
•
Arquitectura Modelo, Vista, Controlador
20. 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
21. 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
22. Vista: Archivos XML
Vista 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
23. Vista: Archivos XML
Vista 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
24. 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
27. Controlador: Métodos estáticos
Métodos que se aplican a todos los registros del
modelo.
@staticmethod
def default_active():
return True
Arquitectura Modelo, Vista, Controlador
28. Controlador: Métodos de clase
Métodos que se aplican a un conjunto de registros
del modelo.
@classmethod
def 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
29. Controlador: Métodos de instancia
Mé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