2. Anatomía de un módulo
Objetivos
- reconocer cada componente de un módulo
- registrar un primer modelo en el Pool
- activar y actualizar el módulo de forma segura
Modelo mental
Este concepto debe entenderse como parte de un sistema transaccional: la interfaz ayuda al usuario, el servidor conserva las reglas y la base persiste el resultado. Un módulo es un paquete Python acompañado de metadatos Tryton. Python define el comportamiento; XML y CSV conectan registros, vistas, acciones, traducciones y permisos.
Práctica guiada
- Cree el paquete y tryton.cfg.
- Defina una clase ModelSQL y ModelView.
- Regístrela desde init.py.
- Cargue XML y CSV de acceso respetando el orden de dependencias.
- Actualice la lista, active el módulo y pruebe después una actualización.
Ejemplo mínimo
[tryton]
version=6.0.0
depends:
ir
res
xml:
library.xml
# library.py
from trytond.model import ModelSQL, ModelView, fields
class Book(ModelSQL, ModelView):
"Library Book"
__name__ = 'library.book'
title = fields.Char("Title", required=True)
# __init__.py
from trytond.pool import Pool
from . import library
def register():
Pool.register(library.Book, module='library', type_='model')
Cómo leer el ejemplo
El nombre técnico del modelo es su identidad estable en base de datos y API; la clase es su identidad Python. El registro indica al Pool qué clases componen el modelo final.
Ejercicio
Agregue un campo ISBN, actualice la base e inspeccione el modelo desde una prueba sin editar SQL manualmente.
Realice el ejercicio primero con un caso mínimo, después agregue un caso inválido y convierta ambos en pruebas repetibles.
Resultado verificable
El módulo se activa, crea su tabla y se actualiza sin perder el primer libro.
Errores frecuentes
- olvidar importaciones relativas
- cargar XML antes que los registros referenciados
- renombrar identificadores XML después de publicar
- declarar dependencias innecesarias
Criterio para avanzar
- Puedo explicar la diferencia entre los conceptos sin mirar el código.
- El caso válido y el inválido tienen pruebas.
- Probé con un usuario sin privilegios administrativos.
- Sé cómo actualizar y cómo recuperar la base de entrenamiento.
Versión y referencias
La serie 6.0 requiere como mínimo Python 3.6 según los metadatos oficiales. Esta rama oficial todavía conserva metadatos históricos en setup.py; mantenga compatibilidad con la serie, pero prepare sus paquetes personalizados para la construcción estándar mediante python -m build. No confunda ese mínimo histórico con la versión de Python que haya certificado su organización.
Esta edición fija ejemplos y dependencias en la serie 6.0. Consulte el tutorial oficial 6.0, la API del servidor y el código de esa rama antes de trasladar el patrón a producción.