From 0ad5deb7ee5e36a40a02bb11b10d8dba265eba3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Fri, 11 Dec 2020 09:45:36 +0100 Subject: [PATCH] [IMP+FIX] mass_mailing_partner: Add partner_name in error constrain message + Add test related to write with multi-partner + Add sudo() to prevent user without mailing access try to merge contacts --- mass_mailing_partner/__manifest__.py | 2 +- .../models/mailing_contact.py | 3 ++- .../tests/test_res_partner.py | 21 +++++++++++++++++-- mass_mailing_partner/wizard/partner_merge.py | 6 ++++-- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/mass_mailing_partner/__manifest__.py b/mass_mailing_partner/__manifest__.py index a17572bc4..afe34449d 100644 --- a/mass_mailing_partner/__manifest__.py +++ b/mass_mailing_partner/__manifest__.py @@ -6,7 +6,7 @@ { "name": "Link partners with mass-mailing", - "version": "13.0.1.0.3", + "version": "13.0.1.0.6", "author": "Tecnativa, " "Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "license": "AGPL-3", diff --git a/mass_mailing_partner/models/mailing_contact.py b/mass_mailing_partner/models/mailing_contact.py index 1312dfbc9..e92a91665 100644 --- a/mass_mailing_partner/models/mailing_contact.py +++ b/mass_mailing_partner/models/mailing_contact.py @@ -29,7 +29,8 @@ class MailingContact(models.Model): ) if contact.list_ids & other_contact.mapped("list_ids"): raise ValidationError( - _("Partner already exists in one of " "these mailing lists") + _("Partner already exists in one of these mailing lists") + + ": %s" % contact.partner_id.display_name ) @api.onchange("partner_id") diff --git a/mass_mailing_partner/tests/test_res_partner.py b/mass_mailing_partner/tests/test_res_partner.py index ef1ff3cb8..779ae997e 100644 --- a/mass_mailing_partner/tests/test_res_partner.py +++ b/mass_mailing_partner/tests/test_res_partner.py @@ -1,7 +1,8 @@ -# Copyright 2015 Pedro M. Baeza -# Copyright 2015 Antonio Espinosa +# Copyright 2015 Tecnativa - Pedro M. Baeza +# Copyright 2015 Tecnativa - Antonio Espinosa # Copyright 2015 Javier Iniesta # Copyright 2020 Tecnativa - Manuel Calero +# Copyright 2021 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo.exceptions import ValidationError @@ -42,3 +43,19 @@ class ResPartnerCase(base.BaseCase): self.check_mailing_contact_partner(contact) with self.assertRaises(ValidationError): self.partner.write({"email": False}) + + def test_write_res_partner_multi(self): + self.assertEqual(len(self.partner.category_id.ids), 2) + partner2 = self.partner.copy({"name": "Partner test 2"}) + self.partner.write({"category_id": [(4, self.category_3.id)]}) + self.assertEqual(len(self.partner.category_id.ids), 3) + self.assertEqual(len(partner2.category_id.ids), 2) + for partner in [self.partner, partner2]: + self.create_mailing_contact( + {"partner_id": partner.id, "list_ids": [[6, 0, [self.mailing_list.id]]]} + ) + self.env["res.partner"].search( + [("id", "in", (self.partner.id, partner2.id))] + ).write({"category_id": [(4, self.category_3.id)]}) + self.assertEqual(len(self.partner.category_id.ids), 3) + self.assertEqual(len(partner2.category_id.ids), 3) diff --git a/mass_mailing_partner/wizard/partner_merge.py b/mass_mailing_partner/wizard/partner_merge.py index e115473b5..97116cc3a 100644 --- a/mass_mailing_partner/wizard/partner_merge.py +++ b/mass_mailing_partner/wizard/partner_merge.py @@ -9,8 +9,10 @@ class BasePartnerMergeAutomaticWizard(models.TransientModel): def _merge(self, partner_ids, dst_partner=None, extra_checks=True): if dst_partner: - contacts = self.env["mailing.contact"].search( - [("partner_id", "in", partner_ids)] + contacts = ( + self.env["mailing.contact"] + .sudo() + .search([("partner_id", "in", partner_ids)]) ) if contacts: contacts = contacts.sorted(