29. Desarrollando con Odoo (21). Recapitulaciones del capítulo 10 (Backend views).
Window Actions
A destacar dos cosas
Tendrán el model=ir.actions.act_windows
Para indicar el modelo sobre el que actuarán serápor una de estas dos referencias: res_model o binding_model_id
<odoo> <record id="action_library_checkout" model="ir.actions.act_window"> <field name="name">Checkouts</field> <field name="res_model">library.checkout</field> <field name="view_mode">tree,form</field> </record> <record id="action_checkout_message" model="ir.actions.act_window"> <field name="name">Send Messages</field> <field name="res_model">library.checkout.massmessage</field> <field name="view_mode">form</field> <field name="binding_model_id" ref="model_library_checkout" /> <field name="binding_view_types">form,list</field> <field name="target">new</field> </record> </odoo>
Bussiness document Views
Tendrán un <header> y un <sheet>. El primero es para añadir botones y un widget de estado, y el segundo tene los campos del formulario
Para el <header>
widget statusbar ... statusbar_visible="draft, open, done"
button ...class "oe_highlight" ... states="open,cancel"
Para el <sheet>
<div class="oe_button_box" Para una botonera a la parte superior derecha
<div class="oe_title" Para un título en la parte superior central
<h3 mas las siguientes clases:
"oe_read_only" solo se muestra si estamos en modo lectura
"oe_edit_only" solo se muestra si estamos modificando
"oe_inline" para que el texto pueda fluir
<group /> Para dividir en varias columnas. Tiene el atributo string para mostrar un título de grupo. También tiene el atributo col para indicar el número de columnas (por defecto 2). colspan indica el núnero de columnas que va a utilizar
<notebook> al pie para campos adicionales que se pueden organizar en "tabs"
Widgets
email : Genera un mailto HTML link
phone: Genera un actionable phone HTML linl
url: Formatea el texto como clickavle URL
html: Muestra y puede editar testo HTML (WYSIWYG)
handle: para campos secuencia
---numericos---
float_time: Formatea un campo float como horas y minutos
monetary: Muestra un float como dinero
progressbar: Muesra el porcentaje de progreso
percentage y percentpie: Se usan en campos float
---relaciones y selecciones ----
many2many_tags: Muestra como etiquetas que parecen botones
many2many_checkboxes: Muestra los valores seleccionables como lista de checboxes
selection: Para campos many to one
radio:
priority: Muestra la selección como estrellas clickables????
state_selection: Muestra un botón tipo semáforo. Suele utilizarse en Kanban
---binarios ----
image: muestra como imagen
pdf_viewer: muestra un pdf
Campos relacionados
quick create: Para crear registros al vuelo
options="{'no_open':True, 'no_create':True}"
context: Establece los valores por defecto de los registros relaciones que se crean desde el campo
domain: Limita o filtra los registros seleccionables.
Botones
Veamos los atributos
string: Label
type: object(metodo del modelo), action (window action)
name: la acción
args: solo cuando el type es object
context: asigna valores al context
confirm: Mensaje de confirnación antes de ejecutar la acción
special="cancel" para añadir un botón de cancelar en wizards
icon="fa-question"
SMART BUTTONS: Se situan en la parte superior derecha. La botonera es el primer elemento de <sheet>
<!-- Smart buttons will go here... -->
</div>
Veamos ka definición de un smart button
<button type="action" <!-- referencia un window action-->
name="%(action_library_checkout)d" <!-- id de la acción-->
class="oe_stat_button" <!-- clase del smart button que debe tener un icon-->
icon="fa-book"
domain="[('member_id', '=', member_id)]"
context="{'default_member_id': member_id}" <!-- el nuevo registro es registrado en el contexto-->
>
<field name="count_checkouts"
string="Checkouts"
widget="statinfo" />
</button>
</div>
Atributos dinámicos
groups: Lista de grupos admitidos separados por comas
states: relación de estados que hacen un e elemento visible
attrs: ver ejemplo
<field name="closed_date" attrs="{'invisible':[('state', 'not in', ['done'])]}"/>
Vistas list <tree>
<field name="name">Checkout Tree</field>
<field name="model">library.checkout</field>
<field name="arch" type="xml">
<tree>
<field name="member_id" />
</tree>
</field>
</record>
Comentarios
Publicar un comentario