import logging import requests import json from odoo import fields, models _logger = logging.getLogger(__name__) class WhatsAppAccount(models.Model): _inherit = 'whatsapp.account' whatsapp_web_url = fields.Char(string="WhatsApp Web URL", readonly=False, copy=False) whatsapp_web_login = fields.Char(string="Login", readonly=False, copy=False) whatsapp_web_api_key = fields.Char(string="API Key", readonly=False, copy=False) def get_groups(self): """ Obtiene los grupos de WhatsApp Web para la cuenta desde la base de datos de la plataforma. Returns: list: Lista de diccionarios con la información de los grupos en formato compatible con Odoo """ self.ensure_one() if not self.whatsapp_web_url: _logger.warning("No se ha configurado la URL de WhatsApp Web para la cuenta %s", self.name) return [] if not self.whatsapp_web_login: _logger.warning("No se ha configurado el Login (session_name) para la cuenta %s", self.name) return [] if not self.whatsapp_web_api_key: _logger.warning("No se ha configurado la API Key para la cuenta %s", self.name) return [] try: # Construir URL del nuevo endpoint base_url = self.whatsapp_web_url.rstrip('/') session_name = self.whatsapp_web_login url = f"{base_url}/api/v1/{session_name}/groups" headers = { "Content-Type": "application/json", "X-API-Key": self.whatsapp_web_api_key } response = requests.get(url, headers=headers, timeout=30) if response.status_code == 200: groups = response.json() _logger.info("Grupos obtenidos desde la base de datos: %d grupos", len(groups)) return groups else: _logger.error("Error al obtener groups: %s - %s", response.status_code, response.text) return [] except Exception as e: _logger.error("Error en la petición de groups: %s", str(e)) return []