[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

pull/1326/head
Víctor Martínez 2020-12-11 09:45:36 +01:00 committed by Mohamed Osman
parent 157ee5d0de
commit 0ad5deb7ee
4 changed files with 26 additions and 6 deletions

View File

@ -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",

View File

@ -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")

View File

@ -1,7 +1,8 @@
# Copyright 2015 Pedro M. Baeza <pedro.baeza@tecnativa.com>
# Copyright 2015 Antonio Espinosa <antonio.espinosa@tecnativa.com>
# Copyright 2015 Tecnativa - Pedro M. Baeza
# Copyright 2015 Tecnativa - Antonio Espinosa
# Copyright 2015 Javier Iniesta <javieria@antiun.com>
# 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)

View File

@ -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(