From 63a16e70748d3bb960199dd82029c625c18147a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 8 Mar 2012 12:24:45 +0100 Subject: [PATCH] [ADD] mail.thread: added automatic forward of message when @login is present in body. Also fixed a bug when posting a comment from the wall. bzr revid: tde@openerp.com-20120308112445-ndv0b1x82kv2uanp --- addons/mail/mail_thread.py | 13 +++++++++---- addons/mail/static/src/css/mail.css | 7 ++++++- addons/mail/static/src/js/mail.js | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index fcbb009615e..5949ef6bbee 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -25,6 +25,7 @@ import base64 import email from email.utils import parsedate +import re import logging import xmlrpclib from osv import osv, fields @@ -119,15 +120,19 @@ class mail_thread(osv.osv): notification_obj.create(cr, uid, {'user_id': vals['need_action_user_id'], 'message_id': msg_id}, context=context) # parse message to get requested users - user_ids = self.message_parse_users(cr, uid, [msg_id], 'body_text', context=context) + user_ids = self.message_parse_users(cr, uid, [msg_id], vals['body_text'], context=context) for user_id in user_ids: + print 'pushed to %d' % (user_id) notification_obj.create(cr, uid, {'user_id': user_id, 'message_id': msg_id}, context=context) return msg_id - def message_parse_users(self, cr, uid, ids, field_name='body_text', context=None): - '''Parse message content; if find @login: returns the related id''' - user_ids = [] + def message_parse_users(self, cr, uid, ids, string, context=None): + '''Parse message content; if find @login -(^|\s)@(\w*)-: returns the related ids''' + regex = re.compile('(^|\s)@(\w*)') + login_lst = [item[1] for item in regex.findall(string)] + if not login_lst: return [] + user_ids = self.pool.get('res.users').search(cr, uid, [('login', 'in', login_lst)], context=context) return user_ids def message_capable_models(self, cr, uid, context=None): diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css index dd79e82a2a1..1a0f433cbd0 100644 --- a/addons/mail/static/src/css/mail.css +++ b/addons/mail/static/src/css/mail.css @@ -82,7 +82,12 @@ .oe_mail_thread { } -.oe_mail_thread_display, .oe_mail_thread_act { +.oe_mail_thread_act { + white-space: normal; + margin-bottom: 5px; +} + +.oe_mail_thread_display { white-space: normal; margin-bottom: 5px; border-bottom: 1px solid #D2D9E7; diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index 2f4b24ce087..8adf116b964 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -667,7 +667,7 @@ openerp.mail = function(session) { */ do_comment: function () { var body_text = this.$element.find('textarea.oe_mail_wall_action_textarea').val(); - return this.ds_users.call('message_append_note', [[this.session.uid], 'Tweet', body_text, type='comment']).then(this.init_comments()); + return this.ds_users.call('message_append_note', [[this.session.uid], 'Tweet', body_text, false, 'comment']).then(this.init_comments()); }, /**