diff --git a/addons/mail/tests/test_mail_composer.py b/addons/mail/tests/test_mail_composer.py index 846c98f8f84..c0ddca184b5 100644 --- a/addons/mail/tests/test_mail_composer.py +++ b/addons/mail/tests/test_mail_composer.py @@ -126,9 +126,8 @@ class TestMailComposerForm(TestMailComposer): ) saved_form = form.save() self.assertEqual( - # saved_form.partner_ids, partner_private + partner_classic, - saved_form.partner_ids, partner_classic, - 'Default value is kept at save (FIXME: loosing private partner)' + saved_form.partner_ids, partner_private + partner_classic, + 'Default value is kept at save' ) with self.mock_mail_gateway(): @@ -136,11 +135,7 @@ class TestMailComposerForm(TestMailComposer): message = self.test_record.message_ids[0] self.assertEqual(message.body, '
Hello
') - # self.assertEqual(message.partner_ids, partner_private + partner_classic) - self.assertEqual( - message.partner_ids, partner_classic, - 'FIXME: loosing private partner' - ) + self.assertEqual(message.partner_ids, partner_private + partner_classic) self.assertEqual(message.subject, f'{test_record.name}') @mute_logger('odoo.addons.base.models.ir_rule', 'odoo.addons.mail.models.mail_mail') diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index f766f2019c6..b6ae9990cc2 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -7,6 +7,7 @@ import re from odoo import _, api, fields, models, tools, Command from odoo.exceptions import UserError +from odoo.osv import expression from odoo.tools import email_re @@ -87,6 +88,12 @@ class MailComposer(models.TransientModel): filtered_result = dict((fname, result[fname]) for fname in result if fname in fields) return filtered_result + def _partner_ids_domain(self): + return expression.OR([ + [('type', '!=', 'private')], + [('id', 'in', self.env.context.get('default_partner_ids', []))], + ]) + # content subject = fields.Char('Subject', compute=False) body = fields.Html( @@ -142,7 +149,7 @@ class MailComposer(models.TransientModel): partner_ids = fields.Many2many( 'res.partner', 'mail_compose_message_res_partner_rel', 'wizard_id', 'partner_id', 'Additional Contacts', - domain=[('type', '!=', 'private')]) + domain=_partner_ids_domain) # sending auto_delete = fields.Boolean('Delete Emails', help='This option permanently removes any track of email after it\'s been sent, including from the Technical menu in the Settings, in order to preserve storage space of your Odoo database.')