diff --git a/addons/website_forum/controllers/website_forum.py b/addons/website_forum/controllers/website_forum.py index 3273b2cfcf9..8a5ffe4086d 100644 --- a/addons/website_forum/controllers/website_forum.py +++ b/addons/website_forum/controllers/website_forum.py @@ -335,8 +335,7 @@ class WebsiteForum(WebsiteProfile): }) post_tag_ids = forum._tag_to_write_vals(post.get('post_tags', '')) - - if request.env.user.forum_waiting_posts_count: + if forum.has_pending_post: return request.redirect("/forum/%s/ask" % slug(forum)) new_question = request.env['forum.post'].create({ diff --git a/addons/website_forum/models/forum_forum.py b/addons/website_forum/models/forum_forum.py index 178d926e2f2..0f1fe1a1a51 100644 --- a/addons/website_forum/models/forum_forum.py +++ b/addons/website_forum/models/forum_forum.py @@ -130,6 +130,21 @@ class Forum(models.Model): karma_user_bio = fields.Integer(string='Display detailed user biography', default=750) karma_post = fields.Integer(string='Ask questions without validation', default=100) karma_moderate = fields.Integer(string='Moderate posts', default=1000) + has_pending_post = fields.Boolean(string='Has pending post', compute='_compute_has_pending_post') + + @api.depends_context('uid') + def _compute_has_pending_post(self): + domain = [ + ('create_uid', '=', self.env.user.id), + ('state', '=', 'pending'), + ('parent_id', '=', False), + ] + pending_forums = self.env['forum.forum'].search([ + ('id', 'in', self.ids), + ('post_ids', 'any', domain), + ]) + pending_forums.has_pending_post = True + (self - pending_forums).has_pending_post = False @api.depends('description') def _compute_teaser(self): diff --git a/addons/website_forum/models/res_users.py b/addons/website_forum/models/res_users.py index 287f3e45b6e..b246e85f31d 100644 --- a/addons/website_forum/models/res_users.py +++ b/addons/website_forum/models/res_users.py @@ -8,21 +8,6 @@ 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="_compute_forum_waiting_posts_count") - - def _compute_forum_waiting_posts_count(self): - read_group_res = self.env['forum.post']._read_group( - [('create_uid', 'in', self.ids), ('state', '=', 'pending'), ('parent_id', '=', False)], - ['create_uid'], - ['__count'], - ) - mapping = { - create_uid.id: count - for create_uid, count in read_group_res - } - for user in self: - user.forum_waiting_posts_count = mapping.get(user.id, 0) # Wrapper for call_kw with inherits def open_website_url(self): diff --git a/addons/website_forum/views/forum_forum_templates.xml b/addons/website_forum/views/forum_forum_templates.xml index 6367319f15c..1a1b31b5c21 100644 --- a/addons/website_forum/views/forum_forum_templates.xml +++ b/addons/website_forum/views/forum_forum_templates.xml @@ -30,7 +30,7 @@ × -
Please wait for a moderator to validate your previous post before continuing.
Back to All Topics diff --git a/addons/website_forum/views/forum_forum_templates_post.xml b/addons/website_forum/views/forum_forum_templates_post.xml index 5d0868f4955..76df258617b 100644 --- a/addons/website_forum/views/forum_forum_templates_post.xml +++ b/addons/website_forum/views/forum_forum_templates_post.xml @@ -293,11 +293,11 @@