You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.7 KiB

  1. # Copyright 2015 Pedro M. Baeza <pedro.baeza@tecnativa.com>
  2. # Copyright 2015 Antonio Espinosa <antonio.espinosa@tecnativa.com>
  3. # Copyright 2015 Javier Iniesta <javieria@antiun.com>
  4. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  5. from odoo import _, api, fields, models
  6. from odoo.exceptions import UserError
  7. class PartnerMailListWizard(models.TransientModel):
  8. _name = "partner.mail.list.wizard"
  9. _description = "Create contact mailing list"
  10. mail_list_id = fields.Many2one(comodel_name="mail.mass_mailing.list",
  11. string="Mailing List")
  12. partner_ids = fields.Many2many(
  13. comodel_name="res.partner", relation="mail_list_wizard_partner",
  14. default=lambda self: self.env.context.get("active_ids"))
  15. @api.multi
  16. def add_to_mail_list(self):
  17. contact_obj = self.env['mail.mass_mailing.contact']
  18. partners = self.partner_ids
  19. add_list = partners.filtered(lambda r: r.mass_mailing_contact_ids)
  20. if add_list:
  21. add_list.mass_mailing_contact_ids[0].list_ids |= self.mail_list_id
  22. to_create = partners - add_list
  23. for partner in to_create:
  24. if not partner.email:
  25. raise UserError(_("Partner '%s' has no email.") % partner.name)
  26. contact_vals = {
  27. 'partner_id': partner.id,
  28. 'list_ids': [[6, 0, [self.mail_list_id.id]]],
  29. 'title_id': partner.title or False,
  30. 'company_name': partner.company_id.name or False,
  31. 'country_id': partner.country_id or False,
  32. 'tag_ids': partner.category_id or False,
  33. }
  34. contact_obj.create(contact_vals)