I want to get an email when ther is an error and raise a mesage error.
from openerp import models, fields, api, _
from openerp.exceptions import ValidationError
from datetime import datetime
So, to send and email, I created the template in this function :
@api.model
def email_template(self):
template_obj = self.env['email.template']
model = self.env['ir.model'].search([('model', '=', 'sync.synchro.partner')])[0]
company= self.env['res.company'].search([])[0]
body_html = '''Synchronization Error'''
synchronise_erreur_template = {
'model_id': model.id,
'name': 'Erreur Technique',
'subject' : 'Erreur produite lors de Synchronisation des contacts',
'body_html': body_html,
'email_from' : company.email or '${object.employee_id.work_email}',
'email_to' : '[email protected]',
}
And I call it when an error occurs
@api.multi
def schedule_synchro(self):
remote_partners = self.env['res.partner']
template_obj = self.pool['email.template']
records = self.env['sync.synchro.partner'].search([])
for record in records :
if record.model_name == 'partners':
try:
remote_partners.export2remote([record.local_id])
record.unlink()
except (Warning) as exc:
template_obj.send_mail(self.env.cr, self.env.uid,
synchro_partner.synchronise_erreur_template.id,
synchro_partner.id, force_send=True,context=self.env.context)
raise except_orm('Couldn t Transfer partner to remote database')
But even when an error occurs, I don't get an E-mail or a message error
I found a solution
@api.model
def email_template(self):
template_obj = self.env['email.template']
model = self.env['ir.model'].search([('model', '=', 'sync.synchro.partner')])[0]
company= self.env['res.company'].search([])[0]
body_html = u""" <html><h1>Erreur de Synchronisation</h1>
<p>This error was raised ...</p></html> """
synchronise_catogory_erreur_template = {
'model_id': model.id,
'name': 'Erreur Technique',
'subject' : 'Erreur produite lors de Synchronisation',
'body_html': body_html,
'email_from' : company.email or '${object.employee_id.work_email}',
'email_to' : '[email protected]',
}
template_exists = template_obj.search([('subject','=',"Erreur produite lors de Synchronisation")])
if not template_exists :
template_record = template_obj.create(synchronise_erreur_template)
else :
template_record = template_exists[0]
return template_record
and I call it here :
@api.multi
def schedule_synchro(self):
template_record = self.email_template()
template_obj = self.pool['email.template']
......
for record in records:
if record.model_name == 'partners':
try:
.....
except Exception as exc:
template_obj.send_mail(self.env.cr, self.env.uid,
template_record.id,
record.id, force_send=True,context=self.env.context)
raise Warning("Couldn t Transfer partner category to remote database \n")