from odoo import api, SUPERUSER_ID import logging _logger = logging.getLogger(__name__) def migrate(cr, version): env = api.Environment(cr, SUPERUSER_ID, {}) # Verificar si el campo ya existe cr.execute(""" SELECT id FROM ir_model_fields WHERE model = 'helpdesk.ticket' AND name = 'affected_user_email' """) existing = cr.fetchone() if existing: _logger.info("Campo affected_user_email ya existe en ir.model.fields") # Asegurar que no esté en la lista negra cr.execute(""" UPDATE ir_model_fields SET website_form_blacklisted = false WHERE id = %s """, (existing[0],)) _logger.info("Campo actualizado: website_form_blacklisted = false") else: # Obtener el modelo cr.execute(""" SELECT id FROM ir_model WHERE model = 'helpdesk.ticket' """) model_result = cr.fetchone() if model_result: model_id = model_result[0] # Crear el campo usando el ORM try: field_vals = { 'model_id': model_id, 'name': 'affected_user_email', 'field_description': 'Affected User', 'ttype': 'char', 'model': 'helpdesk.ticket', 'help': 'Email address of the affected user (from another Odoo instance)', 'website_form_blacklisted': False, 'state': 'base', } field = env['ir.model.fields'].sudo().create(field_vals) _logger.info(f"Campo affected_user_email creado con ID: {field.id}") except Exception as e: _logger.error(f"Error al crear campo con ORM: {e}") else: _logger.error("Modelo helpdesk.ticket no encontrado") cr.commit()