summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavierDo <xdo@odoo.com>2019-03-08 12:32:55 +0000
committerXavierDo <xdo@odoo.com>2019-03-11 12:50:05 +0000
commit49db3d92e7ec583afea61556b0484b5347f4d777 (patch)
treeef4f207396808c01c3568a68efc83d58424e4b5b
parent67990f91f197c6c17f2659e49651915512a0a047 (diff)
[FIX] mail, test_mail: don't notify inactive users
We don't want to notify inactive followers, especially in the case of oddobot that was considered as a inactive partner in _notify_compute_recipients. The computed recipient data for odoobot are (pid:2 active:False pshare:True notif:None) It was considered as a partner and notified by email. This fix simply removes inactive partner from partner to notify. closes odoo/odoo#31734 Signed-off-by: Toufik Benjaa (tbe) <tbe@odoo.com>
-rw-r--r--addons/mail/models/mail_message.py3
-rw-r--r--addons/test_mail/tests/test_discuss.py14
-rw-r--r--addons/test_mail/tests/test_mail_gateway.py14
-rw-r--r--addons/website_sale/static/src/js/website_sale_tour_shop_mail.js11
4 files changed, 37 insertions, 5 deletions
diff --git a/addons/mail/models/mail_message.py b/addons/mail/models/mail_message.py
index f07af1c524f..b108f3d061e 100644
--- a/addons/mail/models/mail_message.py
+++ b/addons/mail/models/mail_message.py
@@ -1079,6 +1079,9 @@ class Message(models.Model):
if pid and pid == author_id and not self.env.context.get('mail_notify_author'): # do not notify the author of its own messages
continue
if pid:
+ if active is False:
+ # avoid to notify inactive partner by email (odoobot)
+ continue
pdata = {'id': pid, 'active': active, 'share': pshare, 'groups': groups}
if notif == 'inbox':
recipient_data['partners'].append(dict(pdata, notif=notif, type='user'))
diff --git a/addons/test_mail/tests/test_discuss.py b/addons/test_mail/tests/test_discuss.py
index 3f27a20f4b0..f182e7f6a55 100644
--- a/addons/test_mail/tests/test_discuss.py
+++ b/addons/test_mail/tests/test_discuss.py
@@ -96,6 +96,20 @@ class TestNotifications(BaseFunctionalTest, MockEmails):
body='Test', message_type='comment', subtype='mail.mt_comment',
partner_ids=[self.user_employee.partner_id.id])
+ def test_inactive_follower(self):
+ # In some case odoobot is follower of a record.
+ # Even if it shouldn't be the case, we want to be sure that odoobot is not notified
+ self.test_record._message_subscribe(self.user_employee.partner_id.ids)
+ with self.assertNotifications(partner_employee=(1, 'inbox', 'unread')):
+ self.test_record.message_post(
+ body='Test', message_type='comment', subtype='mail.mt_comment')
+ self.user_employee.active = False
+ # at this point, partner is still active and would receive an email notification
+ self.user_employee.partner_id._write({'active': False})
+ with self.assertNotifications(partner_employee=(0, '', '')):
+ self.test_record.message_post(
+ body='Test', message_type='comment', subtype='mail.mt_comment')
+
def test_set_message_done_user(self):
with self.assertNotifications(partner_employee=(0, '', '')):
message = self.test_record.message_post(
diff --git a/addons/test_mail/tests/test_mail_gateway.py b/addons/test_mail/tests/test_mail_gateway.py
index 9a8d9e6411f..1a796b07501 100644
--- a/addons/test_mail/tests/test_mail_gateway.py
+++ b/addons/test_mail/tests/test_mail_gateway.py
@@ -486,14 +486,18 @@ class TestMailgateway(BaseFunctionalTest, MockEmails):
@mute_logger('odoo.addons.mail.models.mail_thread', 'odoo.models', 'odoo.addons.mail.models.mail_mail')
def test_private_discussion(self):
""" Testing private discussion between partners. """
- msg1_pids = [self.env.user.partner_id.id, self.partner_1.id]
+ self.partner_2 = self.env['res.partner'].with_context(BaseFunctionalTest._test_context).create({
+ 'name': 'Admin',
+ 'email': 'admin@agrolait.com',
+ })
+ msg1_pids = [self.partner_1.id, self.partner_2.id]
# Do: Raoul writes to Bert and Administrator, with a model specific by parameter that should not be taken into account
msg1 = self.env['mail.thread'].sudo(self.user_employee).message_post(partner_ids=msg1_pids, subtype='mail.mt_comment', model='mail.test')
# Test: message recipients
msg = self.env['mail.message'].browse(msg1.id)
- self.assertEqual(msg.partner_ids, self.env.user.partner_id | self.partner_1,
+ self.assertEqual(msg.partner_ids, self.partner_2 | self.partner_1,
'message_post: private discussion: incorrect recipients')
self.assertEqual(msg.model, False,
'message_post: private discussion: parameter model not correctly ignored when having no res_id')
@@ -510,7 +514,7 @@ class TestMailgateway(BaseFunctionalTest, MockEmails):
# Test: message recipients
self.assertEqual(msg2.author_id, self.partner_1,
'message_post: private discussion: wrong author through mailgateway based on email')
- self.assertEqual(msg2.partner_ids, self.user_employee.partner_id | self.env.user.partner_id,
+ self.assertEqual(msg2.partner_ids, self.user_employee.partner_id | self.partner_2,
'message_post: private discussion: incorrect recipients when replying')
# Do: Bert replies through chatter (is a customer)
@@ -518,9 +522,9 @@ class TestMailgateway(BaseFunctionalTest, MockEmails):
# Test: message recipients
msg = self.env['mail.message'].browse(msg3.id)
- self.assertEqual(msg.partner_ids, self.user_employee.partner_id | self.env.user.partner_id,
+ self.assertEqual(msg.partner_ids, self.user_employee.partner_id | self.partner_2,
'message_post: private discussion: incorrect recipients when replying')
- self.assertEqual(msg.needaction_partner_ids, self.user_employee.partner_id | self.env.user.partner_id,
+ self.assertEqual(msg.needaction_partner_ids, self.user_employee.partner_id | self.partner_2,
'message_post: private discussion: incorrect notified recipients when replying')
@mute_logger('odoo.addons.mail.models.mail_thread', 'odoo.models', 'odoo.addons.mail.models.mail_mail')
diff --git a/addons/website_sale/static/src/js/website_sale_tour_shop_mail.js b/addons/website_sale/static/src/js/website_sale_tour_shop_mail.js
index c8343ef33e5..601f7a2759e 100644
--- a/addons/website_sale/static/src/js/website_sale_tour_shop_mail.js
+++ b/addons/website_sale/static/src/js/website_sale_tour_shop_mail.js
@@ -71,8 +71,19 @@ tour.register('shop_mail', {
extra_trigger: '.o_statusbar_status .btn-primary:contains("Sales Order")',
},
{
+ content: "Open recipients dropdown",
+ trigger: '.o_field_many2one[name="partner_ids"] .ui-autocomplete-input',
+ run: 'click',
+ },
+ {
+ content: "Select azure interior",
+ trigger: '.ui-menu-item a:contains(Interior24)',
+ in_modal: false,
+ },
+ {
content: "click Send email",
trigger: '.btn[name="action_send_mail"]',
+ extra_trigger: '.o_badge_text:contains("Azure")',
},
{
content: "wait mail to be sent, and go see it",