# -*- coding: utf-8 -*- import logging from odoo import api, SUPERUSER_ID _logger = logging.getLogger(__name__) def migrate(cr, version): """Cargar traducciones de selection fields en ir.model.fields.selection""" env = api.Environment(cr, SUPERUSER_ID, {}) # Traducciones de business_impact translations = { 'business_impact': { '0': 'Crítico', '1': 'Alto', '2': 'Normal', } } # Traducciones de approval_status translations['approval_status'] = { 'draft': 'N/A', 'waiting': 'Esperando Aprobación', 'approved': 'Aprobado', 'rejected': 'Rechazado', } _logger.info("Cargando traducciones de selection fields...") for field_name, field_translations in translations.items(): # Buscar el campo en ir.model.fields field_record = env['ir.model.fields'].search([ ('model', '=', 'helpdesk.ticket'), ('name', '=', field_name) ], limit=1) if not field_record: _logger.warning(f"Campo {field_name} no encontrado en ir.model.fields") continue # Actualizar cada opción de selection updated_count = 0 for sel in field_record.selection_ids: if sel.value in field_translations: translated_name = field_translations[sel.value] # Actualizar en español sel.with_context(lang='es_MX').write({'name': translated_name}) updated_count += 1 _logger.info(f" {field_name}.{sel.value}: '{sel.name}' → '{translated_name}'") _logger.info(f"✅ {updated_count} opciones actualizadas para {field_name}") cr.commit() _logger.info("✅ Traducciones de selection fields cargadas exitosamente")