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)