[REF] mail: move channel populate to discuss folder

Part of task-3265211

closes odoo/odoo#120065

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
This commit is contained in:
Sébastien Theys
2023-04-28 13:33:33 +02:00
parent 96d713cf07
commit 673c926f58
7 changed files with 81 additions and 48 deletions
+3 -2
View File
@@ -1,3 +1,4 @@
from . import discuss_channel
from . import discuss_channel_member
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import mail_message
from . import discuss
+5
View File
@@ -0,0 +1,5 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import discuss_channel
from . import discuss_channel_member
from . import mail_message
@@ -0,0 +1,17 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.tools import populate
class Channel(models.Model):
_inherit = "discuss.channel"
_populate_dependencies = ["res.partner"]
_populate_sizes = {"small": 10, "medium": 100, "large": 500}
def _populate_factories(self):
return [
("name", populate.constant("channel_{counter}")),
("channel_type", populate.randomize(["channel", "group"])),
("description", populate.constant("channel_{counter}_description")),
]
@@ -1,11 +1,13 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.tools import populate
class ChannelMember(models.Model):
_inherit = "discuss.channel.member"
_populate_dependencies = ["res.partner", "discuss.channel"]
_populate_sizes = {'small': 10, 'medium': 100, 'large': 1000}
_populate_sizes = {"small": 10, "medium": 100, "large": 1000}
def _populate_factories(self):
partner_ids = self.env.registry.populated_models["res.partner"]
@@ -18,8 +20,7 @@ class ChannelMember(models.Model):
def _populate(self, size):
channel_ids = self.env.registry.populated_models["discuss.channel"]
for channel_id in channel_ids:
self.env['discuss.channel.member'].create({
'partner_id': self.env.ref('base.user_admin').partner_id.id,
'channel_id': channel_id
})
self.env["discuss.channel.member"].create(
{"partner_id": self.env.ref("base.user_admin").partner_id.id, "channel_id": channel_id}
)
return super()._populate(size)
@@ -0,0 +1,26 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.addons.mail.populate.mail_message import Message as MailMessage
from odoo.tools import populate
class Message(models.Model):
_inherit = "mail.message"
_populate_dependencies = ["discuss.channel", "discuss.channel.member"] + MailMessage._populate_dependencies
def _populate_factories(self):
channel_ids = self.env.registry.populated_models["discuss.channel"]
def get_author_id(values, counter, random):
channel = self.env[values["model"]].browse(values["res_id"])
channel_member_ids = [channel["id"] for channel in channel.channel_member_ids.read(["id"])]
return random.choice(channel_member_ids)
return [
("body", populate.constant("message_body_{counter}")),
("message_type", populate.constant("comment")),
("model", populate.constant("discuss.channel")),
("res_id", populate.randomize(channel_ids)),
("author_id", populate.compute(get_author_id)),
]
-15
View File
@@ -1,15 +0,0 @@
# -*- coding: utf-8 -*-
from odoo import models
from odoo.tools import populate
class Channel(models.Model):
_inherit = 'discuss.channel'
_populate_dependencies = ["res.partner"]
_populate_sizes = {'small': 10, 'medium': 100, 'large': 500}
def _populate_factories(self):
return [
('name', populate.constant('channel_{counter}')),
('channel_type', populate.randomize(['channel', 'group'])),
('description', populate.constant('channel_{counter}_description')),
]
+23 -25
View File
@@ -1,39 +1,37 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.tools import populate
class Message(models.Model):
_inherit = 'mail.message'
_populate_dependencies = ['discuss.channel', 'discuss.channel.member', 'res.partner']
_populate_sizes = {'small': 1000, 'medium': 10000, 'large': 500000}
_inherit = "mail.message"
_populate_dependencies = ["res.partner"]
_populate_sizes = {"small": 1000, "medium": 10000, "large": 500000}
def _populate_factories(self):
channel_ids = self.env.registry.populated_models['discuss.channel']
def get_author_id(values, counter, random):
channel = self.env[values['model']].browse(values['res_id'])
channel_member_ids = [channel['id'] for channel in channel.channel_member_ids.read(['id'])]
return random.choice(channel_member_ids)
thread_ids = self.env.registry.populated_models["res.partner"]
return [
('body', populate.constant('message_body_{counter}')),
('message_type', populate.constant('comment')),
('model', populate.constant('discuss.channel')),
('res_id', populate.randomize(channel_ids)),
('author_id', populate.compute(get_author_id)),
("body", populate.constant("message_body_{counter}")),
("message_type", populate.constant("comment")),
("model", populate.constant("res.partner")),
("res_id", populate.randomize(thread_ids)),
("author_id", populate.randomize(thread_ids)),
]
def _populate(self, size):
partner = self.env.ref('base.user_admin').partner_id
partner = self.env.ref("base.user_admin").partner_id
# create 100 in the chatter of the res.partner admin
messages = []
for counter in range(100):
messages.append({
'body': f'message_body_{counter}',
'message_type': 'comment',
'model': 'res.partner',
'res_id': partner.id,
'author_id': partner.id,
})
self.env['mail.message'].create(messages)
messages.append(
{
"body": f"message_body_{counter}",
"message_type": "comment",
"model": "res.partner",
"res_id": partner.id,
"author_id": partner.id,
}
)
self.env["mail.message"].create(messages)
return super()._populate(size)