From 8615272b2c1a522d6363b83f92b6e3d5c85c998d Mon Sep 17 00:00:00 2001 From: "Sunil Sharma (OpenERP)" Date: Tue, 18 Mar 2014 16:42:29 +0530 Subject: [PATCH 1/2] [imp]:improve user vote tab bzr revid: sunilsharma.sharma07@gmail.com-20140318111229-70nqzgul8d4y21e0 --- addons/website_forum/controllers/main.py | 6 +++++- addons/website_forum/views/website_forum.xml | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index 64f36fc48c4..2ae8161fd92 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -161,6 +161,9 @@ class website_forum(http.Controller): question_ids = Post.search(cr, uid, [('forum_id', '=', forum.id), ('create_uid', '=', user.id), ('parent_id', '=', False)], context=context) user_questions = Post.browse(cr, uid, question_ids, context=context) + + post_votes = Vote.search(cr, uid, [('user_id', '=', uid)], context=context) + vote_ids = Vote.browse(cr, uid, post_votes, context=context) #showing questions in which user answered obj_ids = Post.search(cr, uid, [('forum_id', '=', forum.id), ('create_uid', '=', user.id), ('parent_id', '!=', False)], context=context) @@ -196,7 +199,8 @@ class website_forum(http.Controller): 'up_votes': up_votes, 'down_votes': down_votes, 'activities': activities, - 'posts': posts + 'posts': posts, + 'vote_post':vote_ids, } return request.website.render("website_forum.user_detail_full", values) diff --git a/addons/website_forum/views/website_forum.xml b/addons/website_forum/views/website_forum.xml index 1b802de9aba..9f515ec0dc3 100644 --- a/addons/website_forum/views/website_forum.xml +++ b/addons/website_forum/views/website_forum.xml @@ -649,6 +649,9 @@
  • Followed Question
  • +
  • + Votes +
  • @@ -669,6 +672,9 @@

    Followed Questions

    +
    + +
    • @@ -707,5 +713,18 @@
    + From 9bb6139cd201614a7d9523674e98a51318226428 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 19 Mar 2014 14:37:35 +0530 Subject: [PATCH 2/2] [IMP] gamification: improved code to send notification message when bedge assigned, website_forum: improved code to show notification when badge assigned to user. bzr revid: tpa@tinyerp.com-20140319090735-zi01wzh8a8u5cfb7 --- addons/gamification/models/badge.py | 8 ++-- addons/website_forum/controllers/main.py | 42 +++++++++++++++++-- .../static/src/js/website_forum.editor.js | 10 ++++- addons/website_forum/views/website_forum.xml | 17 ++++---- 4 files changed, 60 insertions(+), 17 deletions(-) diff --git a/addons/gamification/models/badge.py b/addons/gamification/models/badge.py index 1d879393ed2..cf8b1fc7ca9 100644 --- a/addons/gamification/models/badge.py +++ b/addons/gamification/models/badge.py @@ -34,7 +34,9 @@ class gamification_badge_user(osv.Model): _name = 'gamification.badge.user' _description = 'Gamification user badge' + _inherit = ['mail.thread'] _order = "create_date desc" + _rec_name = "badge_name" _columns = { 'user_id': fields.many2one('res.users', string="User", required=True), @@ -57,16 +59,16 @@ class gamification_badge_user(osv.Model): """ res = True temp_obj = self.pool.get('email.template') - user_obj = self.pool.get('res.users') template_id = self.pool['ir.model.data'].get_object(cr, uid, 'gamification', 'email_template_badge_received', context) for badge_user in self.browse(cr, uid, ids, context=context): body_html = temp_obj.render_template(cr, uid, template_id.body_html, 'gamification.badge.user', badge_user.id, context=context) - res = user_obj.message_post(cr, uid, badge_user.user_id.id, body=body_html, context=context) + res = self.message_post(cr, uid, badge_user.id, body=body_html, partner_ids=[badge_user.user_id.partner_id.id], context=context) return res def create(self, cr, uid, vals, context=None): + create_context = dict(context, mail_create_nolog=True) self.pool.get('gamification.badge').check_granting(cr, uid, badge_id=vals.get('badge_id'), context=context) - return super(gamification_badge_user, self).create(cr, uid, vals, context=context) + return super(gamification_badge_user, self).create(cr, uid, vals, context=create_context) class gamification_badge(osv.Model): diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index b90e9a12eda..96d4a8472e2 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -53,6 +53,15 @@ class website_forum(http.Controller): }, context=request.context) return request.redirect("/forum/%s" % forum_id) + def _get_notifications(self, **kwargs): + cr, uid, context = request.cr, request.uid, request.context + Message = request.registry['mail.message'] + BadgeUser = request.registry['gamification.badge.user'] + #notification to user. + badgeuser_ids = BadgeUser.search(cr, uid, [('user_id', '=', uid)], context=context) + notification_ids = Message.search(cr, uid, [('res_id', 'in', badgeuser_ids), ('model', '=', 'gamification.badge.user'), ('to_read', '=', True)], context=context) + return Message.browse(cr, uid, notification_ids, context=context) + @http.route(['/forum/', '/forum//page/'], type='http', auth="public", website=True, multilang=True) def questions(self, forum, page=1, filters='', sorting='', **searches): cr, uid, context = request.cr, request.uid, request.context @@ -94,6 +103,7 @@ class website_forum(http.Controller): 'uid': uid, 'total_questions': question_count, 'question_ids': question_ids, + 'notifications': self._get_notifications(), 'forum': forum, 'pager': pager, 'filters': filters, @@ -103,14 +113,27 @@ class website_forum(http.Controller): return request.website.render("website_forum.index", values) + @http.route('/forum/notification_read/', type='json', auth="user", multilang=True, methods=['POST'], website=True) + def notification_read(self, **kwarg): + request.registry['mail.message'].set_message_read(request.cr, request.uid, [int(kwarg.get('notification_id'))], read=True, context=request.context) + return True + @http.route(['/forum//faq'], type='http', auth="public", website=True, multilang=True) def faq(self, forum, **post): - values = { 'searches': {}, 'forum':forum } + values = { + 'searches': {}, + 'forum':forum, + 'notifications': self._get_notifications(), + } return request.website.render("website_forum.faq", values) @http.route(['/forum//ask'], type='http', auth="public", website=True, multilang=True) def question_ask(self, forum, **post): - values = { 'searches': {}, 'forum': forum } + values = { + 'searches': {}, + 'forum': forum, + 'notifications': self._get_notifications(), + } return request.website.render("website_forum.ask_question", values) @http.route(['/forum//question/'], type='http', auth="public", website=True, multilang=True) @@ -122,6 +145,7 @@ class website_forum(http.Controller): filters = 'question' values = { 'question': question, + 'notifications': self._get_notifications(), 'searches': post, 'filters': filters, 'answer_done': answer_done, @@ -208,6 +232,7 @@ class website_forum(http.Controller): 'activities': activities, 'posts': posts, 'vote_post':vote_ids, + 'notifications': self._get_notifications(), } return request.website.render("website_forum.user_detail_full", values) @@ -252,6 +277,7 @@ class website_forum(http.Controller): values = { 'post': post, 'post_answer': post_answer, + 'notifications': self._get_notifications(), 'forum': forum, 'searches': kwargs } @@ -278,6 +304,7 @@ class website_forum(http.Controller): values = { 'question_ids': question_ids, + 'notifications': self._get_notifications(), 'pager': pager, 'forum': forum, 'searches': kwargs @@ -292,6 +319,7 @@ class website_forum(http.Controller): tags = Tag.browse(cr, uid, obj_ids, context=context) values = { 'tags': tags, + 'notifications': self._get_notifications(), 'forum': forum, 'searches': {'tags': True} } @@ -305,6 +333,7 @@ class website_forum(http.Controller): badges = Badge.browse(cr, uid, badge_ids, context=context) values = { 'badges': badges, + 'notifications': [], 'forum': forum, 'searches': {'badges': True} } @@ -317,6 +346,7 @@ class website_forum(http.Controller): values = { 'badge': badge, + 'notifications': [], 'users': users, 'forum': forum, 'searches': kwargs @@ -338,6 +368,7 @@ class website_forum(http.Controller): values = { 'users': users, + 'notifications': self._get_notifications(), 'pager': pager, 'forum': forum, 'searches': searches, @@ -371,7 +402,8 @@ class website_forum(http.Controller): values = { 'post': post, 'forum': forum, - 'searches': kwarg + 'searches': kwarg, + 'notifications': self._get_notifications(), } return request.website.render("website_forum.edit_question", values) @@ -389,7 +421,8 @@ class website_forum(http.Controller): 'post': post, 'post_answer': answer, 'forum': forum, - 'searches': kwarg + 'searches': kwarg, + 'notifications': self._get_notifications(), } return request.website.render("website_forum.edit_answer", values) @@ -422,6 +455,7 @@ class website_forum(http.Controller): 'forum': forum, 'searches': kwarg, 'countries': countries, + 'notifications': self._get_notifications(), } return request.website.render("website_forum.edit_profile", values) diff --git a/addons/website_forum/static/src/js/website_forum.editor.js b/addons/website_forum/static/src/js/website_forum.editor.js index af006df9240..6574f74255a 100644 --- a/addons/website_forum/static/src/js/website_forum.editor.js +++ b/addons/website_forum/static/src/js/website_forum.editor.js @@ -90,7 +90,15 @@ $(document).ready(function () { .then(function (data) { $link.parents('#comment').remove(); }); - return false; + return true; + }); + + $('.notification_close').on('click', function (ev) { + ev.preventDefault(); + var $link = $(ev.currentTarget); + openerp.jsonRpc("/forum/notification_read/", 'call', { + 'notification_id': $link.attr("id")}) + return true; }); }); \ No newline at end of file diff --git a/addons/website_forum/views/website_forum.xml b/addons/website_forum/views/website_forum.xml index 5c661b58f63..d7914d6ba8a 100644 --- a/addons/website_forum/views/website_forum.xml +++ b/addons/website_forum/views/website_forum.xml @@ -111,13 +111,14 @@
    -
    - - Congratulation! You received the New Author badge!
    +
    + + -
    +
    +
    Ask a Question
    @@ -418,11 +419,9 @@
    - - - -