From ed77b7944c74b7631e1f185b8948dd78cb4df3e9 Mon Sep 17 00:00:00 2001 From: david Date: Mon, 27 Jul 2020 08:34:53 +0200 Subject: [PATCH] [FIX] mass_mailing_partner: get contextual list when importing contacts When importing contacts from csv or xls, the list is set by context. So we must try to default to that context when setting the contact values. --- .../models/mail_mass_mailing_contact.py | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/mass_mailing_partner/models/mail_mass_mailing_contact.py b/mass_mailing_partner/models/mail_mass_mailing_contact.py index ce7237872..47a0c79a4 100644 --- a/mass_mailing_partner/models/mail_mass_mailing_contact.py +++ b/mass_mailing_partner/models/mail_mass_mailing_contact.py @@ -38,18 +38,25 @@ class MailMassMailingContact(models.Model): if category_ids: self.tag_ids = category_ids - @api.model - def create(self, vals): - record = self.new(vals) - if not record.partner_id: - record._set_partner() - record._onchange_partner_mass_mailing_partner() - new_vals = record._convert_to_write(record._cache) - new_vals.update( - subscription_list_ids=vals.get('subscription_list_ids', False), - list_ids=vals.get('list_ids', False) - ) - return super(MailMassMailingContact, self).create(new_vals) + @api.model_create_multi + def create(self, vals_list): + new_vals_list = [] + for vals in vals_list: + # Ensure that defaults are loaded (e.g.: import csv or xls) + values_w_defaults = self.default_get(self._fields.keys()) + values_w_defaults.update(vals) + record = self.new(values_w_defaults) + if not record.partner_id: + record._set_partner() + record._onchange_partner_mass_mailing_partner() + new_vals = record._convert_to_write(record._cache) + new_vals.update( + subscription_list_ids=values_w_defaults.get( + 'subscription_list_ids', False), + list_ids=values_w_defaults.get('list_ids', False) + ) + new_vals_list.append(new_vals) + return super().create(new_vals_list) def write(self, vals): for contact in self: @@ -63,7 +70,7 @@ class MailMassMailingContact(models.Model): subscription_list_ids=vals.get('subscription_list_ids', False), list_ids=vals.get('list_ids', False) ) - super(MailMassMailingContact, contact).write(new_vals) + super().write(new_vals) return True def _get_company(self):