clinical_laboratory/scripts/update_company_logo_fixed2.py
Luis Ernesto Portillo Zaldivar ddbc829103 feat: Reorganización de scripts y actualización automática de logo
- Movidos scripts Python a carpetas organizadas (test/ y utils/)
- Agregado logo del laboratorio (lab_logo.png)
- Implementado sistema de actualización automática de logo y nombre de empresa
- Creado script de validación para verificar estado del logo
- Actualizada documentación CLAUDE.md con nuevas rutas
- Eliminados intentos fallidos de cambio de tema CSS
- Ajustado docker-compose.yml para mapear carpetas de scripts

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 03:50:46 -06:00

86 lines
3.0 KiB
Python

import base64
import os
import sys
try:
# El script se ejecuta dentro del shell de Odoo
# env ya está disponible en el contexto
print("Iniciando actualización de logo...")
# 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).decode('utf-8')
print(f"Logo leído correctamente, tamaño: {len(logo_data)} bytes")
# Actualizar las empresas con nombres únicos
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:
# Actualizar el logo y nombre de la empresa
company.write({
'logo': logo_base64,
'name': new_name
})
print(f"Logo actualizado para la empresa ID {company.id}")
print(f"Nuevo nombre: {new_name}")
# También actualizar el partner asociado
if company.partner_id:
company.partner_id.write({
'image_1920': logo_base64,
'name': new_name
})
print(f"Logo y nombre del partner también actualizados (ID: {company.partner_id.id})")
except Exception as e:
print(f"Error al actualizar empresa ID {company.id}: {str(e)}")
continue
# IMPORTANTE: Hacer commit explícito
env.cr.commit()
print("\nCommit realizado - cambios guardados en la base de datos.")
# Verificar que los cambios se guardaron
companies_check = env['res.company'].search([])
print("\n" + "="*60)
print("VERIFICACIÓN FINAL:")
print("="*60)
for company in companies_check:
has_logo = bool(company.logo)
print(f"\nEmpresa ID {company.id}:")
print(f" - Nombre: {company.name}")
print(f" - Logo: {'✓ Presente' if has_logo else '✗ Ausente'}")
if has_logo:
logo_size = len(base64.b64decode(company.logo))
print(f" - Tamaño del logo: {logo_size:,} bytes")
print("\nLogo de la empresa actualizado exitosamente en la base de datos.")
except Exception as e:
print(f"ERROR al actualizar el logo: {str(e)}")
import traceback
traceback.print_exc()
sys.exit(1)