From a26a0e6d302db793df887811be6e16dfa28cae31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 May 2014 13:31:12 +0200 Subject: [PATCH 1/2] [FIX] web: chardomain widget: fixed selection of some records in a list (bad domain formatting), fixed domain evaluation tah is done server-side instead of through a stringigy. --- addons/web/static/src/js/view_form.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 2a495c397e0..7a869d72d55 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2481,6 +2481,7 @@ instance.web.form.FieldCharDomain = instance.web.form.AbstractField.extend(insta this.$('.select_records').on('click', self.on_click); }, on_click: function(ev) { + event.preventDefault(); var self = this; var model = this.options.model || this.field_manager.get_field_value(this.options.model_field); this.pop = new instance.web.form.SelectCreatePopup(this); @@ -2499,15 +2500,14 @@ instance.web.form.FieldCharDomain = instance.web.form.AbstractField.extend(insta }); } else { - var domain = ["id", "in", element_ids]; + var domain = [["id", "in", element_ids]]; var domain_done = $.Deferred().resolve(domain); } $.when(domain_done).then(function (domain) { var domain = self.pop.dataset.domain.concat(domain || []); - self.set_value(JSON.stringify(domain)) + self.set_value(domain); }); }); - event.preventDefault(); }, }); From c93d169fdeb0798045ea2f745883f98390e94c20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 27 May 2014 13:33:10 +0200 Subject: [PATCH 2/2] [FIX] mail: fixed get_default_recipient, trying to call a method even if the target model do not have it; also fixed default recipients generation on the contact model; sending a mass mailing when not having recipient now raise a warning. --- addons/mail/mail_thread.py | 7 ++++--- addons/mass_mailing/models/mass_mailing.py | 11 +++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 8cb735b047f..3cc2f60ed69 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -662,9 +662,10 @@ class mail_thread(osv.AbstractModel): def message_get_default_recipients(self, cr, uid, ids, context=None): if context and context.get('thread_model') and context['thread_model'] in self.pool and context['thread_model'] != self._name: - sub_ctx = dict(context) - sub_ctx.pop('thread_model') - return self.pool[context['thread_model']].message_get_default_recipients(cr, uid, ids, context=sub_ctx) + if hasattr(self.pool[context['thread_model']], 'message_get_default_recipients'): + sub_ctx = dict(context) + sub_ctx.pop('thread_model') + return self.pool[context['thread_model']].message_get_default_recipients(cr, uid, ids, context=sub_ctx) res = {} for record in self.browse(cr, SUPERUSER_ID, ids, context=context): recipient_ids, email_to, email_cc = set(), False, False diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py index 2e8a82a8f4d..f721ed2f385 100644 --- a/addons/mass_mailing/models/mass_mailing.py +++ b/addons/mass_mailing/models/mass_mailing.py @@ -4,10 +4,9 @@ from datetime import datetime from dateutil import relativedelta import json import random -import urllib -import urlparse from openerp import tools +from openerp.exceptions import Warning from openerp.tools.safe_eval import safe_eval as eval from openerp.tools.translate import _ from openerp.osv import osv, fields @@ -62,6 +61,12 @@ class MassMailingContact(osv.Model): rec_id = self.create(cr, uid, {'name': name, 'email': email}, context=context) return self.name_get(cr, uid, [rec_id], context)[0] + def message_get_default_recipients(self, cr, uid, ids, context=None): + res = {} + for record in self.browse(cr, uid, ids, context=context): + res[record.id] = {'partner_ids': [], 'email_to': record.email, 'email_cc': False} + return res + class MassMailingList(osv.Model): """Model of a contact list. """ @@ -549,6 +554,8 @@ class MassMailing(osv.Model): for mailing in self.browse(cr, uid, ids, context=context): # instantiate an email composer + send emails res_ids = self.get_recipients(cr, uid, mailing, context=context) + if not res_ids: + raise Warning('Please select recipients.') comp_ctx = dict(context, active_ids=res_ids) composer_values = { 'author_id': author_id,