Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions mass_mailing_partner/models/mailing_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,16 @@ class MailingList(models.Model):
partner_category = fields.Many2one(
comodel_name="res.partner.category", string="Partner Tag"
)
partner_unique = fields.Boolean(
string="Partner unique?",
help="If is checked, multiple contacts cannot be linked to the same partner",
default=True,
)

@api.constrains("contact_ids")
@api.constrains("partner_unique", "contact_ids")
def _check_contact_ids_partner_id(self):
contact_obj = self.env["mailing.contact"]
for mailing_list in self:
for mailing_list in self.filtered("partner_unique"):
data = contact_obj.read_group(
[
("id", "in", mailing_list.contact_ids.ids),
Expand Down
34 changes: 34 additions & 0 deletions mass_mailing_partner/tests/test_mail_mass_mailing_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,23 @@ def test_create_mass_mailing_list(self):
}
)

def test_create_mass_mailing_list_not_partner_unique(self):
contact_test_1 = self.create_mailing_contact(
{"name": "Contact test 1", "partner_id": self.partner.id}
)
contact_test_2 = self.create_mailing_contact(
{"name": "Contact test 2", "partner_id": self.partner.id}
)
mailing_list = self.create_mailing_list(
{
"name": "List test Create Mailing List",
"partner_unique": False,
"contact_ids": [(6, 0, (contact_test_1 | contact_test_2).ids)],
}
)
with self.assertRaises(ValidationError):
mailing_list.partner_unique = True

def test_create_mass_mailing_list_with_subscription(self):
contact_test_1 = self.create_mailing_contact(
{"name": "Contact test 1", "partner_id": self.partner.id}
Expand All @@ -37,3 +54,20 @@ def test_create_mass_mailing_list_with_subscription(self):
"contact_ids": [(4, contact_test_1.id), (4, contact_test_2.id)],
}
)

def test_create_mass_mailing_list_with_subscription_not_partner_unique(self):
contact_test_1 = self.create_mailing_contact(
{"name": "Contact test 1", "partner_id": self.partner.id}
)
contact_test_2 = self.create_mailing_contact(
{"name": "Contact test 2", "partner_id": self.partner.id}
)
mailing_list = self.create_mailing_list(
{
"name": "List test Creat List With Subscription",
"partner_unique": False,
"contact_ids": [(4, contact_test_1.id), (4, contact_test_2.id)],
}
)
with self.assertRaises(ValidationError):
mailing_list.partner_unique = True
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,21 @@ def test_create_mass_mailing_list(self):
)
with self.assertRaises(ValidationError):
list_3.contact_ids = [(4, contact_test_2.id)]

def test_create_mass_mailing_list_not_partner_unique(self):
contact_test_1 = self.create_mailing_contact(
{"name": "Contact test 1", "partner_id": self.partner.id}
)
contact_test_2 = self.create_mailing_contact(
{"name": "Contact test 2", "partner_id": self.partner.id}
)
list_3 = self.create_mailing_list(
{
"name": "List test 3",
"partner_unique": False,
"contact_ids": [(4, contact_test_1.id)],
}
)
list_3.contact_ids = [(4, contact_test_2.id)]
with self.assertRaises(ValidationError):
list_3.partner_unique = True
1 change: 1 addition & 0 deletions mass_mailing_partner/views/mailing_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<group>
<field name="partner_mandatory" />
<field name="partner_category" />
<field name="partner_unique" />
</group>
</group>
</xpath>
Expand Down
Loading