| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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)
|