msg['sub_type'] = msg['subtype'] or 'plain'
return msg
+ def _postprocess_sent_message(self, cr, uid, message, context=None):
+ """
+ if message is set to auto_delete=True then delete that sent messages as well as attachments
+
+ :param message: the message to parse
+ """
+ if message.auto_delete:
+ self.pool.get('ir.attachment').unlink(cr, uid,
+ [x.id for x in message.attachment_ids \
+ if x.res_model == self._name and \
+ x.res_id == message.id],
+ context=context)
+ message.unlink()
+ return True
def send(self, cr, uid, ids, auto_commit=False, context=None):
"""Sends the selected emails immediately, ignoring their current
message.write({'state':'sent', 'message_id': res})
else:
message.write({'state':'exception'})
- model_pool = self.pool.get(message.model)
- if hasattr(model_pool, '_hook_message_sent'):
- model_pool._hook_message_sent(cr, uid, message.res_id, context=context)
- # if auto_delete=True then delete that sent messages as well as attachments
message.refresh()
- if message.state == 'sent' and message.auto_delete:
- self.pool.get('ir.attachment').unlink(cr, uid,
- [x.id for x in message.attachment_ids \
- if x.res_model == self._name and \
- x.res_id == message.id],
- context=context)
- message.unlink()
+ if message.state == 'sent':
+ self._postprocess_sent_message(cr, uid, message, context=context)
except Exception:
_logger.exception('failed sending mail.message %s', message.id)
message.write({'state':'exception'})
if not result.get('email_from'):
current_user = self.pool.get('res.users').browse(cr, uid, uid, context)
result['email_from'] = current_user.user_email or False
- result['subtype'] = 'html'
return result
_columns = {
result.update({
'subtype' : message_data.subtype or 'plain', # default to the text version due to quoting
'body_text' : body,
- 'body_html' : message_data.body_html,
'subject' : subject,
'attachment_ids' : [],
'model' : message_data.model or False,