fix(#67): Implementar widget selection dinámico con opciones del parámetro

- Cambiar campo value_selection de Char a Selection con opciones dinámicas
- Agregar método _get_selection_options() que obtiene las opciones del parámetro
- Remover campo selection_options_display de la vista ya que el widget selection muestra las opciones
- El widget selection ahora muestra solo las opciones válidas definidas en el parámetro
This commit is contained in:
Luis Ernesto Portillo Zaldivar 2025-07-16 19:31:48 -06:00
parent dcff505a4f
commit c673230b8f
4 changed files with 12 additions and 11 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -92,8 +92,9 @@ class LimsResult(models.Model):
string='Valor de Texto'
)
value_selection = fields.Char(
string='Valor de Selección'
value_selection = fields.Selection(
string='Valor de Selección',
selection='_get_selection_options'
)
# Campo para mostrar las opciones disponibles
@ -310,6 +311,14 @@ class LimsResult(models.Model):
# Esto se usará en las vistas para mostrar las opciones dinámicamente
pass
def _get_selection_options(self):
"""Retorna las opciones de selección basadas en el parámetro."""
options = []
if self.parameter_id and self.parameter_value_type == 'selection':
param_options = self.parameter_id.get_selection_list()
options = [(opt, opt) for opt in param_options]
return options or [('', 'Sin opciones')]
@api.depends('parameter_id', 'parameter_id.selection_values')
def _compute_selection_options_display(self):
"""Calcula las opciones disponibles para mostrar al usuario."""

View File

@ -90,15 +90,7 @@
class="oe_edit_only"/>
<field name="value_selection"
invisible="parameter_value_type != 'selection'"
placeholder="Seleccione una opción"
class="oe_edit_only"/>
<field name="selection_options_display"
invisible="parameter_value_type != 'selection'"
readonly="1"
nolabel="1"
class="text-muted small"
widget="text"
style="font-size: 0.85em; color: #6c757d;"/>
widget="selection"/>
<field name="value_boolean"
invisible="parameter_value_type != 'boolean'"
widget="boolean_toggle"