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))
'/forum/<model("forum.forum"):forum>/<model("forum.post"):post_parent>/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,
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]