import logging import base64 from odoo.addons.whatsapp.tools.whatsapp_api import WhatsAppApi _logger = logging.getLogger(__name__) # Guarda una referencia al método original original_get_whatsapp_document = WhatsAppApi._get_whatsapp_document def custom_get_whatsapp_document(self, document_id): _logger.info("Ejecutando versión modificada de _get_whatsapp_document") if self.wa_account_id.whatsapp_web_url: _logger.info("Ejecutando versión modificada de _get_whatsapp_document con whatsapp web") result = base64.b64decode(document_id) else: result = original_get_whatsapp_document(self, document_id) # Aquí puedes modificar 'result' si es necesario antes de devolverlo return result # Sobrescribir el método en tiempo de ejecución WhatsAppApi._get_whatsapp_document = custom_get_whatsapp_document # Parche para el método _post_whatsapp_reaction para evitar errores de constraint try: from odoo.addons.whatsapp.models.mail_message import MailMessage # Guardar referencia al método original original_post_whatsapp_reaction = MailMessage._post_whatsapp_reaction def custom_post_whatsapp_reaction(self, reaction_content, partner_id): """Parche para evitar error de constraint cuando partner_id es None""" self.ensure_one() # Si no hay partner_id, no procesar la reacción if not partner_id: _logger.warning("Reacción de WhatsApp recibida sin partner_id para mensaje %s - ignorando", self.id) return # Llamar al método original si hay partner_id return original_post_whatsapp_reaction(self, reaction_content, partner_id) # Aplicar el parche MailMessage._post_whatsapp_reaction = custom_post_whatsapp_reaction _logger.info("Parche aplicado exitosamente para _post_whatsapp_reaction") except ImportError as e: _logger.warning("No se pudo aplicar el parche para _post_whatsapp_reaction: %s", e)