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)