X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=addons%2Fwebsite_forum%2Fcontrollers%2Fmain.py;fp=addons%2Fwebsite_forum%2Fcontrollers%2Fmain.py;h=78eb41dfb6f92cb2741247e7459c67c8e785a111;hb=fcd06145dda957a83e687fd033ff294c407da5f4;hp=bc3a7bc7a5d028d0f948e2f5e5d3c9b67ba3d74d;hpb=d9610efd979c974e540353716f8d0b9ecdb9d952;p=odoo%2Fodoo.git diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index bc3a7bc..78eb41d 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -261,7 +261,7 @@ class WebsiteForum(http.Controller): if not request.session.uid: return login_redirect() user = request.env.user - if not post_type in ['question', 'link', 'discussion']: # fixme: make dynamic + if post_type not in ['question', 'link', 'discussion']: # fixme: make dynamic return werkzeug.utils.redirect('/forum/%s' % slug(forum)) if not user.email or not tools.single_email_re.match(user.email): return werkzeug.utils.redirect("/forum/%s/user/%s/edit?email_required=1" % (slug(forum), request.session.uid)) @@ -272,10 +272,8 @@ class WebsiteForum(http.Controller): '/forum///reply'], type='http', auth="public", methods=['POST'], website=True) def post_create(self, forum, post_parent=None, post_type=None, **post): - cr, uid, context = request.cr, request.uid, request.context if not request.session.uid: return login_redirect() - post_tag_ids = forum._tag_to_write_vals(post.get('post_tags', '')) new_question = request.env['forum.post'].create({ 'forum_id': forum.id, @@ -420,18 +418,26 @@ class WebsiteForum(http.Controller): Data = request.env["ir.model.data"] user = User.sudo().search([('id', '=', user_id)]) - if not user or user.karma < 1: + current_user = request.env.user.sudo() + + # 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]