[MERGE] forward port of branch 8.0 up to 591e329
[odoo/odoo.git] / addons / website_forum / controllers / main.py
index 3a1397e..faea931 100644 (file)
@@ -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]