[MERGE] forward port of branch 7.0 up to be7c894
authorDenis Ledoux <dle@odoo.com>
Tue, 4 Nov 2014 16:54:48 +0000 (17:54 +0100)
committerDenis Ledoux <dle@odoo.com>
Tue, 4 Nov 2014 16:54:48 +0000 (17:54 +0100)
1  2 
addons/mail/mail_mail.py
addons/web/static/src/js/views.js
addons/web_kanban/static/src/js/kanban.js
openerp/addons/base/ir/ir_mail_server.py

@@@ -271,24 -292,36 +271,34 @@@ class mail_mail(osv.Model)
                  res = None
                  for email in email_list:
                      msg = ir_mail_server.build_email(
 -                        email_from = mail.email_from,
 -                        email_to = email.get('email_to'),
 -                        subject = email.get('subject'),
 -                        body = email.get('body'),
 -                        body_alternative = email.get('body_alternative'),
 -                        email_cc = tools.email_split(mail.email_cc),
 -                        reply_to = email.get('reply_to'),
 -                        attachments = attachments,
 -                        message_id = mail.message_id,
 -                        references = mail.references,
 -                        object_id = mail.res_id and ('%s-%s' % (mail.res_id, mail.model)),
 -                        subtype = 'html',
 -                        subtype_alternative = 'plain')
 +                        email_from=mail.email_from,
 +                        email_to=email.get('email_to'),
 +                        subject=email.get('subject'),
 +                        body=email.get('body'),
 +                        body_alternative=email.get('body_alternative'),
 +                        email_cc=tools.email_split(mail.email_cc),
 +                        reply_to=mail.reply_to,
 +                        attachments=attachments,
 +                        message_id=mail.message_id,
 +                        references=mail.references,
 +                        object_id=mail.res_id and ('%s-%s' % (mail.res_id, mail.model)),
 +                        subtype='html',
 +                        subtype_alternative='plain',
 +                        headers=headers)
-                     res = ir_mail_server.send_email(cr, uid, msg,
+                     try:
 -                        res = ir_mail_server.send_email(
 -                            cr, uid,
 -                            msg,
 -                            mail_server_id=mail.mail_server_id.id,
 -                            context=context
 -                        )
++                        res = ir_mail_server.send_email(cr, uid, msg,
 +                                                    mail_server_id=mail.mail_server_id.id,
 +                                                    context=context)
+                     except AssertionError as error:
+                         if error.message == ir_mail_server.NO_VALID_RECIPIENT:
+                             # No valid recipient found for this particular
+                             # mail item -> ignore error to avoid blocking
+                             # delivery to next recipients, if any. If this is
+                             # the only recipient, the mail will show as failed.
+                             _logger.warning("Ignoring invalid recipients for mail.mail %s: %s",
+                                             mail.message_id, email.get('email_to'))
+                         else:
+                             raise
                  if res:
                      mail.write({'state': 'sent', 'message_id': res})
                      mail_sent = True
Simple merge
@@@ -280,17 -273,12 +279,15 @@@ instance.web_kanban.KanbanView = instan
                          self.nb_records += records.length;
                          self.dataset.ids.push.apply(self.dataset.ids, dataset.ids);
                          groups_array[index] = new instance.web_kanban.KanbanGroup(self, records, group, dataset);
-                         if (self.dataset.index >= records.length){
-                             self.dataset.index = self.dataset.size() ? 0 : null;
-                         }
-                         if (!remaining--) {
-                             return self.do_add_groups(groups_array);
-                         }
                  });
              })).then(function () {
 +                if(!self.nb_records) {
 +                    self.no_result();
 +                }
+                 if (self.dataset.index >= self.nb_records){
+                     self.dataset.index = self.dataset.size() ? 0 : null;
+                 }
+                 return self.do_add_groups(groups_array);
              });
          });
      },
@@@ -398,9 -400,8 +402,9 @@@ class ir_mail_server(osv.osv)
          email_to = message['To']
          email_cc = message['Cc']
          email_bcc = message['Bcc']
 +        
          smtp_to_list = filter(None, tools.flatten(map(extract_rfc2822_addresses,[email_to, email_cc, email_bcc])))
-         assert smtp_to_list, "At least one valid recipient address should be specified for outgoing emails (To/Cc/Bcc)"
+         assert smtp_to_list, self.NO_VALID_RECIPIENT
  
          # Do not actually send emails in testing mode!
          if getattr(threading.currentThread(), 'testing', False):