Saltar al contenido principal
Versión: Tryton 7.0 (LTS)

4. Vistas, acciones y menús

Tryton 7.0 · curso práctico versionado

Objetivos

  • conectar modelos con puntos de entrada utilizables
  • diseñar vistas de lista y formulario enfocadas
  • comprender que visibilidad no significa autorización

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. Una vista presenta un modelo; una acción decide cómo abrirlo; un menú expone la acción. Son tres registros distintos y ninguno sustituye los permisos.

Práctica guiada

  1. Declare las vistas de formulario y lista.
  2. Cree ir.action.act_window y ordene sus vistas.
  3. Conecte la acción con un menú.
  4. Conceda acceso explícito al modelo mediante CSV.
  5. Pruebe con un usuario normal después de iniciar sesión nuevamente.

Ejemplo mínimo

<record model="ir.ui.view" id="book_view_form">
<field name="model">library.book</field>
<field name="type">form</field>
<field name="name">book_form</field>
</record>
<record model="ir.action.act_window" id="act_book">
<field name="name">Books</field>
<field name="res_model">library.book</field>
</record>
<menuitem name="Library" id="menu_library" sequence="50"/>
<menuitem parent="menu_library" action="act_book"
id="menu_book" sequence="10"/>

Cómo leer el ejemplo

Alinee los formularios con la secuencia de trabajo y limite las listas a campos útiles para reconocer o decidir. Traduzca etiquetas visibles en lugar de incorporar lógica dependiente del idioma.

Ejercicio

Cree los XML de formulario y lista, agregue orden de búsqueda y verifique la acción en los clientes de escritorio y web.

Realice el ejercicio primero con un caso mínimo, después agregue un caso inválido y convierta ambos en pruebas repetibles.

Resultado verificable

Un usuario autorizado abre, crea y busca libros; otro sin permiso no accede mediante RPC aunque conozca el modelo.

Errores frecuentes

  • tratar un menú oculto como seguridad
  • saturar las listas con todos los campos
  • usar identificadores numéricos de base
  • olvidar los permisos CSV o traducciones

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 7.0 requiere como mínimo Python 3.8 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 7.0. Consulte el tutorial oficial 7.0, la API del servidor y el código de esa rama antes de trasladar el patrón a producción.