summaryrefslogtreecommitdiff
path: root/addons/mass_mailing/models/mailing.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/mass_mailing/models/mailing.py')
-rw-r--r--addons/mass_mailing/models/mailing.py29
1 files changed, 19 insertions, 10 deletions
diff --git a/addons/mass_mailing/models/mailing.py b/addons/mass_mailing/models/mailing.py
index 2011ac6c916..99690cea60b 100644
--- a/addons/mass_mailing/models/mailing.py
+++ b/addons/mass_mailing/models/mailing.py
@@ -13,6 +13,7 @@ from base64 import b64encode
from odoo import api, fields, models, tools, _, SUPERUSER_ID
from odoo.exceptions import UserError
+from odoo.osv import expression
from odoo.tools.safe_eval import safe_eval
_logger = logging.getLogger(__name__)
@@ -193,19 +194,27 @@ class MassMailing(models.Model):
else:
mass_mailing.next_departure = cron_time
- @api.onchange('mailing_model_id', 'contact_list_ids')
+ @api.onchange('mailing_model_name', 'contact_list_ids')
def _onchange_model_and_list(self):
- mailing_domain = []
+ mailing_domain = literal_eval(self.mailing_domain) if self.mailing_domain else []
if self.mailing_model_name:
- if self.mailing_model_name == 'mailing.list':
- if self.contact_list_ids:
- mailing_domain.append(('list_ids', 'in', self.contact_list_ids.ids))
- else:
- mailing_domain.append((0, '=', 1))
- elif 'opt_out' in self.env[self.mailing_model_name]._fields and not self.mailing_domain:
- mailing_domain.append(('opt_out', '=', False))
+ if mailing_domain:
+ try:
+ self.env[self.mailing_model_real].search(mailing_domain, limit=1)
+ except:
+ mailing_domain = []
+ if not mailing_domain:
+ if self.mailing_model_name == 'mailing.list':
+ if self.contact_list_ids:
+ mailing_domain = [('list_ids', 'in', self.contact_list_ids.ids)]
+ else:
+ mailing_domain = [(0, '=', 1)]
+ elif self.mailing_model_name == 'res.partner':
+ mailing_domain = [('customer', '=', True)]
+ elif 'opt_out' in self.env[self.mailing_model_name]._fields and not self.mailing_domain:
+ mailing_domain = [('opt_out', '=', False)]
else:
- mailing_domain.append((0, '=', 1))
+ mailing_domain = [(0, '=', 1)]
self.mailing_domain = repr(mailing_domain)
@api.onchange('subject')