diff --git a/addons/website_forum/models/res_users.py b/addons/website_forum/models/res_users.py index 5e5b88f34fb..f41082bd5aa 100644 --- a/addons/website_forum/models/res_users.py +++ b/addons/website_forum/models/res_users.py @@ -1,20 +1,31 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import api, fields, models +from odoo import fields, models class Users(models.Model): _inherit = 'res.users' create_date = fields.Datetime('Create Date', readonly=True, index=True) - forum_waiting_posts_count = fields.Integer('Waiting post', compute="_get_user_waiting_post") + forum_waiting_posts_count = fields.Integer( + 'Waiting post', compute="_compute_forum_waiting_posts_count") - def _get_user_waiting_post(self): + def _compute_forum_waiting_posts_count(self): + if not self.ids: + self.forum_waiting_posts_count = 0 + return + read_group_res = self.env['forum.post']._read_group( + [('create_uid', 'in', self.ids), ('state', '=', 'pending'), ('parent_id', '=', False)], + ['create_uid'], + ['create_uid'], + ) + mapping = { + res_group['create_uid'][0]: res_group['create_uid_count'] + for res_group in read_group_res + } for user in self: - Post = self.env['forum.post'] - domain = [('parent_id', '=', False), ('state', '=', 'pending'), ('create_uid', '=', user.id)] - user.forum_waiting_posts_count = Post.search_count(domain) + user.forum_waiting_posts_count = mapping.get(user.id, 0) # Wrapper for call_kw with inherits def open_website_url(self):