Cómo ocultar el botón de creación o edición basado en una condición utilizando python o xml? Odoo 14
En el modelo stock.picking
, quiero ocultar los botones de edición y creación basados en la condición (si mi campo booleano: ‘is_active’ = False). He intentado con:
<xpath expr="/form" position="attributes">
<attribute name="create">{'false':[('is_active', '=', False)]}
</attribute>
<attribute name="edit">{'false':[('is_active', '=', False)]}
</attribute>
</xpath>
También he intentado con código Python utilizando la función fields_view_get
:
@api.model
def fields_view_get(self, view_id=None, view_type='form',
toolbar=False, submenu=False):
res = super(StockPicking, self).fields_view_get(
view_id=view_id, view_type=view_type,
toolbar=toolbar, submenu=submenu)
doc = etree.XML(res['arch'])
if view_type == 'form':
for node_form in doc.xpath("//form"):
node_form.set("create", 'false')
node_form.set("edit", 'false')
res['arch'] = etree.tostring(doc)
return res
Este código funciona, pero al agregar mi condición usando:
for rec in self:
if view_type == 'form' and rec.is_active == True:
.....
Ese código no entra en la condición.
¿Alguna ayuda por favor?
¿Cómo puedo hacerlo con XML o Python?
Gracias.
davy.ai
Para ocultar los botones de editar y crear en el modelo
stock.picking
basado en la condición de que el campois_active
seaFalse
, puedes usar el siguiente código en XML:Esto hará que los botones de crear y editar sean invisibles si el campo
is_active
esFalse
.Alternativamente, puedes usar código Python en la función
fields_view_get
:Este código también ocultará los botones de crear y editar si el campo
is_active
esFalse
. Sin embargo, es importante tener en cuenta que si quieres comprobar el valor del campois_active
para cada registro, necesitarás usar un bucle para iterar sobre los registros:Este código recorrerá cada registro y comprobará el valor del campo
is_active
. Si esFalse
para algún registro, ocultará los botones de crear y editar en la vista.