
- Cambiar 'tree' por 'list' en view_mode de todas las acciones de dashboard - Corregir sintaxis de filtros de fecha usando context_today() y relativedelta - Eliminar campo booleano is_out_of_range como medida en gráfico - Corregir referencia a sample.state en lugar de sample.sample_state - Reemplazar sample.test_ids por búsqueda de tests asociados - Eliminar consulta SQL directa a columna logo inexistente - Corregir método invalidate_cache() por _invalidate_cache() - Agregar sección de notificaciones en CLAUDE.md Los dashboards ahora funcionan correctamente sin errores de JavaScript. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
91 lines
3.2 KiB
Python
91 lines
3.2 KiB
Python
import base64
|
|
import os
|
|
import sys
|
|
|
|
try:
|
|
# El script se ejecuta dentro del shell de Odoo
|
|
print("Iniciando actualización de logo para Odoo 18...")
|
|
|
|
# Buscar TODAS las empresas
|
|
companies = env['res.company'].search([])
|
|
print(f"Empresas encontradas: {len(companies)}")
|
|
|
|
# Leer el archivo de logo
|
|
logo_path = '/mnt/extra-addons/lims_management/static/img/lab_logo.png'
|
|
if not os.path.exists(logo_path):
|
|
print(f"ERROR: No se encontró el archivo de logo en: {logo_path}")
|
|
sys.exit(1)
|
|
|
|
print(f"Archivo de logo encontrado en: {logo_path}")
|
|
|
|
# Leer y codificar la imagen
|
|
with open(logo_path, 'rb') as logo_file:
|
|
logo_data = logo_file.read()
|
|
logo_base64 = base64.b64encode(logo_data) # No decodificar a string
|
|
|
|
print(f"Logo leído correctamente, tamaño: {len(logo_data)} bytes")
|
|
|
|
# Actualizar las empresas
|
|
for idx, company in enumerate(companies):
|
|
print(f"\nActualizando empresa ID {company.id}: {company.name}")
|
|
|
|
# Generar nombre único para cada empresa
|
|
if idx == 0:
|
|
new_name = 'Laboratorio Clínico LIMS'
|
|
else:
|
|
new_name = f'Laboratorio Clínico LIMS - Sucursal {idx}'
|
|
|
|
try:
|
|
# En Odoo 18, actualizar por separado para evitar problemas
|
|
# Primero el nombre
|
|
company.name = new_name
|
|
env.cr.commit()
|
|
print(f"Nombre actualizado: {new_name}")
|
|
|
|
# Luego el logo usando sudo para evitar problemas de permisos
|
|
company.sudo().write({
|
|
'logo': logo_base64,
|
|
})
|
|
env.cr.commit()
|
|
print(f"Logo actualizado para la empresa ID {company.id}")
|
|
|
|
# También actualizar el partner asociado
|
|
if company.partner_id:
|
|
company.partner_id.name = new_name
|
|
company.partner_id.sudo().write({
|
|
'image_1920': logo_base64,
|
|
})
|
|
env.cr.commit()
|
|
print(f"Partner actualizado (ID: {company.partner_id.id})")
|
|
|
|
except Exception as e:
|
|
print(f"Error al actualizar empresa ID {company.id}: {str(e)}")
|
|
env.cr.rollback()
|
|
continue
|
|
|
|
# Verificación final usando el ORM
|
|
print("\n" + "="*60)
|
|
print("VERIFICACIÓN FINAL:")
|
|
print("="*60)
|
|
|
|
# Verificar a través del ORM que es más seguro
|
|
for company in env['res.company'].search([], order='id'):
|
|
print(f"\nEmpresa ID {company.id}:")
|
|
print(f" - Nombre: {company.name}")
|
|
print(f" - Logo presente: {'SI' if company.logo else 'NO'}")
|
|
if company.logo:
|
|
print(f" - Tamaño del logo (base64): {len(company.logo):,} caracteres")
|
|
|
|
# Forzar actualización de caché
|
|
env['res.company']._invalidate_cache()
|
|
|
|
print("\nLogo de la empresa actualizado exitosamente.")
|
|
print("NOTA: Si el logo no aparece en la interfaz, puede ser necesario:")
|
|
print(" 1. Limpiar la caché del navegador (Ctrl+F5)")
|
|
print(" 2. Reiniciar el servicio de Odoo")
|
|
|
|
except Exception as e:
|
|
print(f"ERROR al actualizar el logo: {str(e)}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
sys.exit(1) |