From 546ad55636b42895c3876a8b115bb7b0b4e2ac3f Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Mon, 24 Mar 2014 11:36:50 +0530 Subject: [PATCH] [IMP] improved code for delete question: instead of unlink just update active so user can undelete it. bzr revid: tpa@tinyerp.com-20140324060650-q8xtujw35i7933ba --- addons/website_forum/controllers/main.py | 28 +++++++++++++++---- .../website_forum/data/forum_badges_data.xml | 13 ++------- addons/website_forum/models/forum.py | 4 +-- addons/website_forum/views/website_forum.xml | 25 +++++++++++++---- 4 files changed, 46 insertions(+), 24 deletions(-) diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index e6b3cc63895..0413066e99c 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -187,7 +187,8 @@ class website_forum(http.Controller): Data = request.registry["ir.model.data"] #questions asked by user. - question_ids = Post.search(cr, uid, [('forum_id', '=', forum.id), ('user_id', '=', user.id), ('parent_id', '=', False)], context=context) + question_ids = Post.search(cr, uid, [('forum_id', '=', forum.id), ('user_id', '=', user.id), ('parent_id', '=', False), + '|', ('active', '=', False), ('active', '=', True)], context=context) user_questions = Post.browse(cr, uid, question_ids, context=context) #showing questions in which user answered @@ -391,8 +392,18 @@ class website_forum(http.Controller): @http.route('/forum//delete/question/', type='http', auth="user", multilang=True, website=True) def delete_question(self, forum, post, **kwarg): - request.registry['website.forum.post'].unlink(request.cr, request.uid, [post.id], context=request.context) - return werkzeug.utils.redirect("/forum/%s/" % (slug(forum))) + #instead of unlink record just change 'active' to false so user can undelete it. + request.registry['website.forum.post'].write( request.cr, request.uid, [post.id], { + 'active': False, + }, context=request.context) + return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum),post.id)) + + @http.route('/forum//undelete/question/', type='http', auth="user", multilang=True, website=True) + def undelete_question(self, forum, post, **kwarg): + request.registry['website.forum.post'].write( request.cr, request.uid, [post.id], { + 'active': True, + }, context=request.context) + return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum),post.id)) @http.route('/forum/message_delete/', type='json', auth="user", multilang=True, methods=['POST'], website=True) def delete_comment(self, **kwarg): @@ -441,7 +452,7 @@ class website_forum(http.Controller): Post.write( cr, uid, [child.id], { 'correct': False, }, context=context) - Post.write( cr, uid, [int(kwarg.get('post_id'))], { + Post.write( cr, uid, [post.id, post.parent_id.id], { 'correct': correct, }, context=context) return correct @@ -470,7 +481,7 @@ class website_forum(http.Controller): return request.website.render("website_forum.close_question", values) @http.route('/forum//question/close/', type='http', auth="user", multilang=True, methods=['POST'], website=True) - def save_edited_question(self, forum, **post): + def close(self, forum, **post): request.registry['website.forum.post'].write( request.cr, request.uid, [int(post.get('post_id'))], { 'state': 'close', 'closed_by': request.uid, @@ -479,6 +490,13 @@ class website_forum(http.Controller): }, context=request.context) return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum),post.get('post_id'))) + @http.route('/forum//reopen/question/', type='http', auth="user", multilang=True, website=True) + def reopen(self, forum, post, **kwarg): + request.registry['website.forum.post'].write( request.cr, request.uid, [post.id], { + 'state': 'active', + }, context=request.context) + return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum),post.id)) + @http.route('/forum//edit/profile/', type='http', auth="user", multilang=True, website=True) def edit_profile(self, forum, user, **kwarg): cr,context = request.cr, request.context diff --git a/addons/website_forum/data/forum_badges_data.xml b/addons/website_forum/data/forum_badges_data.xml index 71387fe96fc..a595fd8ec3f 100644 --- a/addons/website_forum/data/forum_badges_data.xml +++ b/addons/website_forum/data/forum_badges_data.xml @@ -145,16 +145,13 @@ gold - Discipline Delete own post with 3 or more upvotes count boolean - [('user_id','=',user.id), ('vote_count', '>=', 3)] + [('user_id','=',user.id), ('vote_count', '>=', 3), ('active', '=', False)] higher @@ -364,7 +361,6 @@ result = get_counter(cr, uid, context=context) silver - Favorite Question Ask a question which can be favorited by minimum 5 users @@ -747,16 +743,13 @@ result = get_posts(cr, uid, context=context) gold - Peer Pressure Delete own post with 3 or more down votes count boolean - [('user_id','=',user.id), ('vote_count', '<=', -3)] + [('user_id','=',user.id), ('vote_count', '<=', -3), ('active', '=', False)] higher @@ -861,7 +854,6 @@ result = get_count(cr, uid, context=context) gold - Scholar Ask a question and accept an answer @@ -932,7 +924,6 @@ result = get_count(cr, uid, context=context) bronze - Stellar Question Ask a question which can be favorited by minimum 25 users diff --git a/addons/website_forum/models/forum.py b/addons/website_forum/models/forum.py index 5c6cc4b2418..3b1b84c1f25 100644 --- a/addons/website_forum/models/forum.py +++ b/addons/website_forum/models/forum.py @@ -114,7 +114,7 @@ class Post(osv.Model): 'favourite_ids': fields.many2many('res.users', 'forum_favourite_rel', 'forum_id', 'user_id', 'Favourite'), - 'state': fields.selection([('active', 'Active'),('close', 'Close'),('offensive', 'Offensive')], 'Status'), + 'state': fields.selection([('active', 'Active'), ('close', 'Close'),('offensive', 'Offensive')], 'Status'), 'active': fields.boolean('Active'), 'views': fields.integer('Page Views'), @@ -151,7 +151,7 @@ class Post(osv.Model): } ), - 'correct': fields.boolean('Correct Answer'), + 'correct': fields.boolean('Correct Answer/ Answer on this question accepted.'), 'reason': fields.selection([ ('duplicate', 'duplicate question'), ('off_topic', 'question is off-topic or not relevant'), diff --git a/addons/website_forum/views/website_forum.xml b/addons/website_forum/views/website_forum.xml index 0e805e5582c..c11483253f6 100644 --- a/addons/website_forum/views/website_forum.xml +++ b/addons/website_forum/views/website_forum.xml @@ -47,6 +47,8 @@