clinical_laboratory/test/test_menu_action.py
Luis Ernesto Portillo Zaldivar 0a7e3a1b12 fix: Corregir errores de compatibilidad con Odoo 18 y validación de resultados
- Cambiar view_mode de 'tree' a 'list' en menus.xml para action_lims_test
- Cambiar mode='tree' a 'list' en lims_test_views.xml para campo result_ids
- Corregir script create_demo_data.py:
  * Comentar campo inexistente 'lab_request_priority'
  * Cambiar 'observations' por 'note' (campo estándar)
  * Cambiar 'lab_sample_ids' por 'generated_sample_ids'
  * Ajustar índices de pacientes para usar María González (femenina) para embarazo
- Mejorar validación en lims_result.py:
  * Considerar False y 0.0 como equivalentes para campos numéricos
  * Solo requerir valores cuando la prueba no esté en estado 'draft'

Resuelve el error "View types not defined tree found in act_window action 457"
y permite confirmar órdenes con pruebas de selección correctamente.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 18:25:24 -06:00

65 lines
2.2 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import odoo
import json
def test_menu_action(cr):
env = odoo.api.Environment(cr, odoo.SUPERUSER_ID, {})
print("\n=== VERIFICANDO MENÚ Y ACCIÓN DE PRUEBAS ===\n")
# Verificar el menú
menu = env.ref('lims_management.menu_lims_tests', raise_if_not_found=False)
if menu:
print(f"✓ Menú encontrado: {menu.name}")
print(f" - ID: {menu.id}")
print(f" - Acción: {menu.action.name if menu.action else 'Sin acción'}")
print(f" - Padre: {menu.parent_id.name if menu.parent_id else 'Sin padre'}")
else:
print("✗ No se encontró el menú")
return
# Verificar la acción
action = env.ref('lims_management.action_lims_test', raise_if_not_found=False)
if action:
print(f"\n✓ Acción encontrada: {action.name}")
print(f" - ID: {action.id}")
print(f" - Modelo: {action.res_model}")
print(f" - View mode: {action.view_mode}")
# Simular la apertura de la acción
print("\n=== SIMULANDO APERTURA DE LA ACCIÓN ===")
# Obtener las vistas
model = env['lims.test']
print("\nVistas disponibles para lims.test:")
views = env['ir.ui.view'].search([('model', '=', 'lims.test')])
for view in views:
print(f" - {view.name} (tipo: {view.type})")
# Verificar que se puede crear una instancia
print("\n✓ Modelo lims.test existe y es accesible")
# Verificar acciones en formato JSON
print("\n=== DATOS DE LA ACCIÓN (JSON) ===")
action_dict = {
'id': action.id,
'name': action.name,
'res_model': action.res_model,
'view_mode': action.view_mode,
'context': action.context,
'domain': action.domain,
'type': action.type,
}
print(json.dumps(action_dict, indent=2))
else:
print("✗ No se encontró la acción")
print("\n=== VERIFICACIÓN COMPLETADA ===")
if __name__ == '__main__':
db_name = 'lims_demo'
registry = odoo.registry(db_name)
with registry.cursor() as cr:
test_menu_action(cr)