clinical_laboratory/test/check_views.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

59 lines
2.1 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import odoo
def check_views(cr):
env = odoo.api.Environment(cr, odoo.SUPERUSER_ID, {})
print("\n=== VERIFICANDO VISTAS DE lims.test ===\n")
# Buscar todas las vistas del modelo
views = env['ir.ui.view'].search([('model', '=', 'lims.test')])
print(f"Total de vistas encontradas: {len(views)}\n")
for view in views:
print(f"ID: {view.id}")
print(f"Nombre: {view.name}")
print(f"Tipo: {view.type}")
print(f"Prioridad: {view.priority}")
print(f"Activa: {view.active}")
print(f"XML ID: {view.xml_id}")
print("-" * 50)
# Verificar la acción
print("\n=== VERIFICANDO ACCIÓN ===\n")
action = env.ref('lims_management.action_lims_test', raise_if_not_found=False)
if action:
print(f"Acción encontrada: {action.name}")
print(f"Modelo: {action.res_model}")
print(f"View mode: {action.view_mode}")
print(f"View ID: {action.view_id.name if action.view_id else 'No definida'}")
print(f"Search view ID: {action.search_view_id.name if action.search_view_id else 'No definida'}")
# Verificar las vistas específicas
print("\nVistas específicas de la acción:")
for view_ref in action.view_ids:
print(f" - Tipo: {view_ref.view_mode}, Vista: {view_ref.view_id.name if view_ref.view_id else 'Por defecto'}")
else:
print("⚠️ No se encontró la acción")
# Probar obtener la vista por defecto
print("\n=== PROBANDO OBTENER VISTA POR DEFECTO ===\n")
try:
view_id, view_type = env['lims.test'].get_view()
print(f"Vista por defecto: ID={view_id}, Tipo={view_type}")
# Intentar obtener vista tree específicamente
tree_view = env['lims.test'].get_view(view_type='tree')
print(f"Vista tree: ID={tree_view[0]}, Tipo={tree_view[1]}")
except Exception as e:
print(f"❌ Error al obtener vista: {e}")
if __name__ == '__main__':
db_name = 'lims_demo'
registry = odoo.registry(db_name)
with registry.cursor() as cr:
check_views(cr)