post-migration.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from odoo import api, SUPERUSER_ID
  2. import logging
  3. _logger = logging.getLogger(__name__)
  4. def migrate(cr, version):
  5. env = api.Environment(cr, SUPERUSER_ID, {})
  6. # Verificar si el campo ya existe
  7. cr.execute("""
  8. SELECT id FROM ir_model_fields
  9. WHERE model = 'helpdesk.ticket' AND name = 'affected_user_email'
  10. """)
  11. existing = cr.fetchone()
  12. if existing:
  13. _logger.info("Campo affected_user_email ya existe en ir.model.fields")
  14. # Asegurar que no esté en la lista negra
  15. cr.execute("""
  16. UPDATE ir_model_fields
  17. SET website_form_blacklisted = false
  18. WHERE id = %s
  19. """, (existing[0],))
  20. _logger.info("Campo actualizado: website_form_blacklisted = false")
  21. else:
  22. # Obtener el modelo
  23. cr.execute("""
  24. SELECT id FROM ir_model WHERE model = 'helpdesk.ticket'
  25. """)
  26. model_result = cr.fetchone()
  27. if model_result:
  28. model_id = model_result[0]
  29. # Crear el campo usando el ORM
  30. try:
  31. field_vals = {
  32. 'model_id': model_id,
  33. 'name': 'affected_user_email',
  34. 'field_description': 'Affected User',
  35. 'ttype': 'char',
  36. 'model': 'helpdesk.ticket',
  37. 'help': 'Email address of the affected user (from another Odoo instance)',
  38. 'website_form_blacklisted': False,
  39. 'state': 'base',
  40. }
  41. field = env['ir.model.fields'].sudo().create(field_vals)
  42. _logger.info(f"Campo affected_user_email creado con ID: {field.id}")
  43. except Exception as e:
  44. _logger.error(f"Error al crear campo con ORM: {e}")
  45. else:
  46. _logger.error("Modelo helpdesk.ticket no encontrado")
  47. cr.commit()