odoo18/addons_extensions/whatsapp/populate/whatsapp_message.py

45 lines
1.8 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
import string
from odoo import models
from odoo.tools import populate
_logger = logging.getLogger(__name__)
class WhatsappMessage(models.Model):
_inherit = "whatsapp.message"
_populate_dependencies = ["whatsapp.template", "mail.message"]
_populate_sizes = {'small': 100, 'medium': 1_500, 'large': 25_000}
def _populate_factories(self):
random = populate.Random("whatsapp.message")
templates = self.env["whatsapp.template"].browse(self.env.registry.populated_models["whatsapp.template"])
templates = templates.filtered(lambda template: template.status == 'approved')
accounts = self.env.registry.populated_models["whatsapp.account"]
messages = self.env.registry.populated_models["mail.message"]
message_type = ['outbound', 'inbound']
state = ['outgoing', 'sent', 'delivered', 'read', 'received', 'error', 'cancel']
def compute_mobile_number(**kwargs):
return ''.join(random.choices(string.digits[1:], k=10))
def generate_random_message_uid(**kwargs):
return ''.join(random.choices(string.ascii_uppercase, k=10))
def compute_wa_template_id(**kwargs):
return random.choice(templates.ids)
return [
('mobile_number', populate.compute(compute_mobile_number)),
('message_type', populate.randomize(message_type)),
('state', populate.randomize(state)),
('wa_template_id', populate.compute(compute_wa_template_id)),
('msg_uid', populate.compute(generate_random_message_uid)),
('wa_account_id', populate.randomize(accounts)),
('mail_message_id', populate.randomize(messages)),
]