odoo18/addons_extensions/whatsapp/populate/discuss_channel.py

47 lines
1.7 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
import random
import string
from odoo import models
_logger = logging.getLogger(__name__)
class DiscussChannel(models.Model):
_inherit = "discuss.channel"
@property
def _populate_dependencies(self):
return super()._populate_dependencies + ["whatsapp.account"]
def _populate(self, size):
res = super()._populate(size)
accounts = self.env["whatsapp.account"].browse(self.env.registry.populated_models["whatsapp.account"])
group = self.env.ref("base.group_system")
partners = self.env["res.partner"].browse(self.env.registry.populated_models["res.partner"])
partners = partners.filtered(lambda partner: not partner.is_company)
def generate_random_phone(**kwargs):
return '+91' + ''.join(random.choices(string.digits[1:], k=10))
channels = []
for _ in range(0, {"small": 30, "medium": 200, "large": 1000}[size]):
whatsapp_number = generate_random_phone()
partner = random.choice(partners)
channels.append(
{
"channel_partner_ids": [(4, partner.id)],
"channel_type": "whatsapp",
"group_ids": group,
"name": f"{whatsapp_number} {partner.name}",
'wa_account_id': random.choice(accounts.ids),
'whatsapp_number': whatsapp_number,
"whatsapp_partner_id": partner.id,
}
)
# install_mode to prevent from automatically adding system as member
res += self.env["discuss.channel"].with_context(install_mode=True).create(channels)
return res