[FIX] [CLEAN] website_forum: cleaned and fixed upvote, downvote and favourite

bzr revid: tde@openerp.com-20140411171029-zeqtrko98z1jr3sm
This commit is contained in:
Thibault Delavallée
2014-04-11 19:10:29 +02:00
parent 5a3f68a767
commit b9b087ffb5
3 changed files with 7 additions and 45 deletions
+2 -34
View File
@@ -186,33 +186,17 @@ class WebsiteForum(http.Controller):
})
return request.website.render("website_forum.post_description_full", values)
@http.route('/forum/<int:forum_id>/question/<int:question_id>/toggle_favourite', type='json', auth="user", multilang=True, website=True)
def question_toggle_favorite_tmp(self, forum_id, question_id, **post):
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/toggle_favourite', type='json', auth="user", multilang=True, methods=['POST'], website=True)
def question_toggle_favorite(self, forum, question, **post):
if not request.session.uid:
return {'error': 'anonymous_user'}
# forum = request.registry['forum.forum'].browse(request.cr, request.uid, forum_id, context=request.context)
question = request.registry['forum.post'].browse(request.cr, request.uid, question_id, context=request.context)
# TDE: add check for not public
favourite = False if question.user_favourite else True
print favourite
if favourite:
favourite_ids = [(4, request.uid)]
else:
favourite_ids = [(3, request.uid)]
request.registry['forum.post'].write(request.cr, request.uid, [question.id], {'favourite_ids': favourite_ids}, context=request.context)
print favourite_ids
return favourite
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/toggle_favourite', type='json', auth="user", multilang=True, methods=['POST'], website=True)
def question_toggle_favorite(self, forum, question, **post):
# TDE: add check for not public
favourite = False if question.user_favourite else True
if favourite:
favourite_ids = [(4, request.uid)]
else:
favourite_ids = [(3, request.uid)]
request.registry['forum.post'].write(
request.cr, request.uid, [question.id], {'favourite_ids': favourite_ids}, context=request.context)
return favourite
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/ask_for_close', type='http', auth="user", multilang=True, website=True)
@@ -359,28 +343,12 @@ class WebsiteForum(http.Controller):
question = post.parent_id if post.parent_id else post
return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum), slug(question)))
@http.route('/forum/<int:forum_id>/post/<int:post_id>/upvote', type='json', auth="public", multilang=True, website=True)
def post_upvote_tmp(self, forum_id, post_id, **kwargs):
if not request.session.uid:
return {'error': 'anonymous_user'}
# forum = request.registry['forum.forum'].browse(request.cr, request.uid, forum_id, context=request.context)
post = request.registry['forum.post'].browse(request.cr, request.uid, post_id, context=request.context)
return request.registry['forum.post'].vote(request.cr, request.uid, [post.id], upvote=True, context=request.context)
@http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/upvote', type='json', auth="public", multilang=True, website=True)
def post_vote(self, forum, post, **kwargs):
if not request.session.uid:
return {'error': 'anonymous_user'}
return request.registry['forum.post'].vote(request.cr, request.uid, [post.id], upvote=True, context=request.context)
@http.route('/forum/<int:forum_id>/post/<int:post_id>/downvote', type='json', auth="public", multilang=True, website=True)
def post_downvote_tmp(self, forum_id, post_id, **kwargs):
if not request.session.uid:
return {'error': 'anonymous_user'}
# forum = request.registry['forum.forum'].browse(request.cr, request.uid, forum_id, context=request.context)
post = request.registry['forum.post'].browse(request.cr, request.uid, post_id, context=request.context)
return request.registry['forum.post'].vote(request.cr, request.uid, [post.id], upvote=False, context=request.context)
@http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/downvote', type='json', auth="public", multilang=True, website=True)
def post_downvote(self, forum, post, **kwargs):
if not request.session.uid:
@@ -3,11 +3,7 @@ $(document).ready(function () {
$('.vote_up ,.vote_down').on('click', function (ev) {
ev.preventDefault();
var $link = $(ev.currentTarget);
var url_target = $link.data("value") == '1' ? 'upvote' : 'downvote';
var forum_id = $link.data('forum-id');
var post_id = $link.data('post-id');
openerp.jsonRpc("/forum/" + forum_id + "/post/" + post_id + "/" + url_target, 'call', {})
openerp.jsonRpc($link.attr('href'), 'call', {})
.then(function (data) {
if (data['error']){
if (data['error'] == 'own_post'){
@@ -84,9 +80,7 @@ $(document).ready(function () {
$('.favourite_question').on('click', function (ev) {
ev.preventDefault();
var $link = $(ev.currentTarget);
var forum_id = $link.data('forum-id');
var post_id = $link.data('post-id');
openerp.jsonRpc("/forum/" + forum_id + "/question/" + post_id + "/toggle_favourite", 'call', {}).then(function (data) {
openerp.jsonRpc($link.attr('href'), 'call', {}).then(function (data) {
if (data) {
$link.addClass("forum_favourite_question")
} else {
+3 -3
View File
@@ -379,10 +379,10 @@
<template id="vote">
<div t-attf-class="box oe_grey">
<a t-attf-class="vote_up fa fa-thumbs-up no-decoration #{post.user_vote == 1 and 'text-success' or ''}"
t-attf-data-post-id="#{post.id}" t-attf-data-forum-id="#{post.forum_id.id}" data-value="1"/>
t-attf-href="/forum/#{slug(post.forum_id)}/post/#{slug(post)}/upvote"/>
<span id="vote_count" t-esc="post.vote_count"/>
<a t-attf-class="vote_down fa fa-thumbs-down no-decoration #{post.user_vote == -1 and 'text-warning' or ''}"
t-attf-data-post-id="#{post.id}" t-attf-data-forum-id="#{post.forum_id.id}" data-value="-1"/>
t-attf-href="/forum/#{slug(post.forum_id)}/post/#{slug(post)}/downvote"/>
<div>
votes
</div>
@@ -404,7 +404,7 @@
<span t-if="question.child_count&lt;=1">Answer</span>
</div>
<div>
<a t-attf-data-forum-id="#{question.forum_id.id}" t-attf-data-post-id="#{question.id}"
<a t-attf-href="/forum/#{slug(question.forum_id)}/question/#{slug(question)}/toggle_favourite"
t-attf-class="favourite_question no-decoration fa fa-2x fa-star #{question.user_favourite and 'forum_favourite_question' or ''}"/>
</div>
</div>