whatsapp_patch.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import logging
  2. import base64
  3. from odoo.addons.whatsapp.tools.whatsapp_api import WhatsAppApi
  4. _logger = logging.getLogger(__name__)
  5. # Guarda una referencia al método original
  6. original_get_whatsapp_document = WhatsAppApi._get_whatsapp_document
  7. def custom_get_whatsapp_document(self, document_id):
  8. _logger.info("Ejecutando versión modificada de _get_whatsapp_document")
  9. if self.wa_account_id.whatsapp_web_url:
  10. _logger.info("Ejecutando versión modificada de _get_whatsapp_document con whatsapp web")
  11. result = base64.b64decode(document_id)
  12. else:
  13. result = original_get_whatsapp_document(self, document_id)
  14. # Aquí puedes modificar 'result' si es necesario antes de devolverlo
  15. return result
  16. # Sobrescribir el método en tiempo de ejecución
  17. WhatsAppApi._get_whatsapp_document = custom_get_whatsapp_document
  18. # Parche para el método _post_whatsapp_reaction para evitar errores de constraint
  19. try:
  20. from odoo.addons.whatsapp.models.mail_message import MailMessage
  21. # Guardar referencia al método original
  22. original_post_whatsapp_reaction = MailMessage._post_whatsapp_reaction
  23. def custom_post_whatsapp_reaction(self, reaction_content, partner_id):
  24. """Parche para evitar error de constraint cuando partner_id es None"""
  25. self.ensure_one()
  26. # Si no hay partner_id, no procesar la reacción
  27. if not partner_id:
  28. _logger.warning("Reacción de WhatsApp recibida sin partner_id para mensaje %s - ignorando", self.id)
  29. return
  30. # Llamar al método original si hay partner_id
  31. return original_post_whatsapp_reaction(self, reaction_content, partner_id)
  32. # Aplicar el parche
  33. MailMessage._post_whatsapp_reaction = custom_post_whatsapp_reaction
  34. _logger.info("Parche aplicado exitosamente para _post_whatsapp_reaction")
  35. except ImportError as e:
  36. _logger.warning("No se pudo aplicar el parche para _post_whatsapp_reaction: %s", e)