post-migration.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # -*- coding: utf-8 -*-
  2. import logging
  3. from odoo import api, SUPERUSER_ID
  4. _logger = logging.getLogger(__name__)
  5. def migrate(cr, version):
  6. """Cargar traducciones de selection fields en ir.model.fields.selection"""
  7. env = api.Environment(cr, SUPERUSER_ID, {})
  8. # Traducciones de business_impact
  9. translations = {
  10. 'business_impact': {
  11. '0': 'Crítico',
  12. '1': 'Alto',
  13. '2': 'Normal',
  14. }
  15. }
  16. # Traducciones de approval_status
  17. translations['approval_status'] = {
  18. 'draft': 'N/A',
  19. 'waiting': 'Esperando Aprobación',
  20. 'approved': 'Aprobado',
  21. 'rejected': 'Rechazado',
  22. }
  23. _logger.info("Cargando traducciones de selection fields...")
  24. for field_name, field_translations in translations.items():
  25. # Buscar el campo en ir.model.fields
  26. field_record = env['ir.model.fields'].search([
  27. ('model', '=', 'helpdesk.ticket'),
  28. ('name', '=', field_name)
  29. ], limit=1)
  30. if not field_record:
  31. _logger.warning(f"Campo {field_name} no encontrado en ir.model.fields")
  32. continue
  33. # Actualizar cada opción de selection
  34. updated_count = 0
  35. for sel in field_record.selection_ids:
  36. if sel.value in field_translations:
  37. translated_name = field_translations[sel.value]
  38. # Actualizar en español
  39. sel.with_context(lang='es_MX').write({'name': translated_name})
  40. updated_count += 1
  41. _logger.info(f" {field_name}.{sel.value}: '{sel.name}' → '{translated_name}'")
  42. _logger.info(f"✅ {updated_count} opciones actualizadas para {field_name}")
  43. cr.commit()
  44. _logger.info("✅ Traducciones de selection fields cargadas exitosamente")