diff options
| author | Jeremy Kersten <jke@odoo.com> | 2019-03-20 09:41:55 +0000 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2019-03-20 13:04:00 +0000 |
| commit | 9854e0e908a6e960ff2445b94ffcad3489be4dfd (patch) | |
| tree | c809271adcf0bf1835ed8bbeacda5cf1323e9480 /addons | |
| parent | 7e6577398afb4df9f75a99cff5becb5a3cdd2182 (diff) | |
[FIX] mass_mailing: support partner_id field
Manual cherrypick of 83b37a8
sale.order but also event.track need to use partner_id as email field
Closes #31954
closes odoo/odoo#31967
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/mass_mailing/i18n/mass_mailing.pot | 6 | ||||
| -rw-r--r-- | addons/mass_mailing/models/mass_mailing.py | 31 |
2 files changed, 28 insertions, 9 deletions
diff --git a/addons/mass_mailing/i18n/mass_mailing.pot b/addons/mass_mailing/i18n/mass_mailing.pot index 33d8f3f3928..60a4c414166 100644 --- a/addons/mass_mailing/i18n/mass_mailing.pot +++ b/addons/mass_mailing/i18n/mass_mailing.pot @@ -1687,6 +1687,12 @@ msgid "Unsubscription Date" msgstr "" #. module: mass_mailing +#: code:addons/mass_mailing/models/mass_mailing.py:639 +#, python-format +msgid "Unsupported mass mailing model %s" +msgstr "" + +#. module: mass_mailing #: model:ir.ui.view,arch_db:mass_mailing.s_mail_block_paragraph msgid "Usability improvements made on Odoo will automatically apply to all\n" " of our fully integrated apps." diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py index 3c1fa6dcc46..9000262b057 100644 --- a/addons/mass_mailing/models/mass_mailing.py +++ b/addons/mass_mailing/models/mass_mailing.py @@ -616,15 +616,28 @@ class MassMailing(models.Model): """Returns a set of emails already targeted by current mailing/campaign (no duplicates)""" self.ensure_one() target = self.env[self.mailing_model_real] - mail_field = 'email' if 'email' in target._fields else 'email_from' - # avoid loading a large number of records in memory - # + use a basic heuristic for extracting emails - query = """ - SELECT lower(substring(%(mail_field)s, '([^ ,;<@]+@[^> ,;]+)')) - FROM mail_mail_statistics s - JOIN %(target)s t ON (s.res_id = t.id) - WHERE substring(%(mail_field)s, '([^ ,;<@]+@[^> ,;]+)') IS NOT NULL - """ + if set(['email', 'email_from']) & set(target._fields): + mail_field = 'email' if 'email' in target._fields else 'email_from' + # avoid loading a large number of records in memory + # + use a basic heuristic for extracting emails + query = """ + SELECT lower(substring(%(mail_field)s, '([^ ,;<@]+@[^> ,;]+)')) + FROM mail_mail_statistics s + JOIN %(target)s t ON (s.res_id = t.id) + WHERE substring(%(mail_field)s, '([^ ,;<@]+@[^> ,;]+)') IS NOT NULL + """ + elif 'partner_id' in target._fields: + mail_field = 'email' + query = """ + SELECT lower(substring(p.%(mail_field)s, '([^ ,;<@]+@[^> ,;]+)')) + FROM mail_mail_statistics s + JOIN %(target)s t ON (s.res_id = t.id) + JOIN res_partner p ON (t.partner_id = p.id) + WHERE substring(p.%(mail_field)s, '([^ ,;<@]+@[^> ,;]+)') IS NOT NULL + """ + else: + raise UserError(_("Unsupported mass mailing model %s") % self.mailing_model_id.name) + if self.mass_mailing_campaign_id.unique_ab_testing: query +=""" AND s.mass_mailing_campaign_id = %%(mailing_campaign_id)s; |
