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.

42 lines
1.6 KiB

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