diff options
Diffstat (limited to 'addons/website_forum/controllers/main.py')
| -rw-r--r-- | addons/website_forum/controllers/main.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index 3a1397e6a3f..faea93141d8 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -419,18 +419,28 @@ class WebsiteForum(http.Controller): Data = request.env["ir.model.data"] user = User.sudo().search([('id', '=', user_id)]) + current_user = request.env.user.sudo() if not user or user.karma < 1: + + # Users with high karma can see users with karma <= 0 for + # moderation purposes, IFF they have posted something (see below) + if (not user or + (user.karma < 1 and current_user.karma < forum.karma_unlink_all)): return werkzeug.utils.redirect("/forum/%s" % slug(forum)) values = self._prepare_forum_values(forum=forum, **post) - if user_id != request.session.uid and not user.website_published: - return request.website.render("website_forum.private_profile", values) + # questions and answers by user - user_questions, user_answers = [], [] user_question_ids = Post.search([ ('parent_id', '=', False), ('forum_id', '=', forum.id), ('create_uid', '=', user.id)], order='create_date desc') count_user_questions = len(user_question_ids) + + if (user_id != request.session.uid and not + (user.website_published or + (count_user_questions and current_user.karma > forum.karma_unlink_all))): + return request.website.render("website_forum.private_profile", values) + # displaying only the 20 most recent questions user_questions = user_question_ids[:20] |
