Browse Source

[ADD] scheduler_error_mailer

pull/2/head
alexis-via 11 years ago
committed by Pedro M. Baeza
parent
commit
968a3ec2e1
  1. 24
      scheduler_error_mailer/__init__.py
  2. 48
      scheduler_error_mailer/__openerp__.py
  3. BIN
      scheduler_error_mailer/images/scheduler_error_mailer.jpg
  4. 70
      scheduler_error_mailer/ir_cron.py
  5. 24
      scheduler_error_mailer/ir_cron.xml
  6. 27
      scheduler_error_mailer/ir_cron_demo.xml
  7. 50
      scheduler_error_mailer/ir_cron_email_tpl.xml
  8. BIN
      scheduler_error_mailer/static/src/img/icon.png

24
scheduler_error_mailer/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Scheduler Error Mailer module for OpenERP
# Copyright (C) 2012-2013 Akretion (http://www.akretion.com/)
# @author: Sébastien Beau <sebastien.beau@akretion.com>
# @author Alexis de Lattre <alexis.delattre@akretion.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import ir_cron

48
scheduler_error_mailer/__openerp__.py

@ -0,0 +1,48 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# Scheduler Error Mailer module for OpenERP
# Copyright (C) 2012-2013 Akretion (http://www.akretion.com/)
# @author: Sébastien Beau <sebastien.beau@akretion.com>
# @author David Beal <bealdavid@gmail.com>
# @author Alexis de Lattre <alexis.delattre@akretion.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Scheduler Error Mailer',
'summary': 'Send an e-mail when a scheduler fails',
'version': '1.0',
'category': 'Extra Tools',
'license': 'AGPL-3',
'description': """
Scheduler Error Mailer
======================
This module adds the possibility to send an e-mail when a scheduler raises an error.""",
'author': 'Akretion',
'website': 'http://www.akretion.com/',
'depends': ['email_template'],
'data': [
'ir_cron.xml',
'ir_cron_email_tpl.xml',
],
'demo': ['ir_cron_demo.xml'],
'images': ['images/scheduler_error_mailer.jpg'],
'installable': True,
'active': False,
}

BIN
scheduler_error_mailer/images/scheduler_error_mailer.jpg

After

Width: 900  |  Height: 364  |  Size: 29 KiB

70
scheduler_error_mailer/ir_cron.py

@ -0,0 +1,70 @@
# -*- encoding: utf-8 -*-
#################################################################################
#
# Scheduler Error Mailer module for OpenERP
# Copyright (C) 2012-2013 Akretion (http://www.akretion.com/)
# @author: Sébastien Beau <sebastien.beau@akretion.com>
# @author David Beal <bealdavid@gmail.com>
# @author Alexis de Lattre <alexis.delattre@akretion.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp.osv import orm, fields
from openerp.tools.translate import _
import logging
logger = logging.getLogger(__name__)
class ir_cron(orm.Model):
_inherit = "ir.cron"
_columns = {
'email_template': fields.many2one('email.template',
'Error E-mail Template',
help="Select the email template that will be sent when this scheduler fails."),
}
def _handle_callback_exception(self, cr, uid, model_name, method_name, args, job_id, job_exception):
res = super(ir_cron, self)._handle_callback_exception(cr, uid,
model_name, method_name, args, job_id, job_exception)
my_cron = self.browse(cr, uid, job_id)
if my_cron.email_template:
# we put the job_exception in context to be able to print it inside
# the email template
context = {
'job_exception': job_exception,
'dbname': cr.dbname,
}
logger.debug("Sending scheduler error email with context=%s" % context)
self.pool['email.template'].send_mail(cr, uid,
my_cron.email_template.id, my_cron.id, force_send=True,
context=context)
return res
class res_users(orm.Model):
_inherit = 'res.users'
def test_scheduler_failure(self, cr, uid, context=None):
"""This function is used to test and debug this module"""
raise orm.except_orm(_('Error :'), _("Task failure with UID = %d." % uid))

24
scheduler_error_mailer/ir_cron.xml

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2012-2013 Akretion (http://www.akretion.com/)
The licence is in the file __openerp__.py
-->
<openerp>
<data>
<record id="ir_cron_error_mailer_view" model="ir.ui.view">
<field name="name">ir.cron.error.mailer.form</field>
<field name="model">ir.cron</field>
<field name="inherit_id" ref="base.ir_cron_view"/>
<field name="arch" type="xml">
<field name="doall" position="after">
<field name="email_template" />
</field>
</field>
</record>
</data>
</openerp>

27
scheduler_error_mailer/ir_cron_demo.xml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2013 Akretion (http://www.akretion.com/)
@author Alexis de Lattre <alexis.delattre@akretion.com>
The licence is in the file __openerp__.py
-->
<openerp>
<data noupdate="1">
<record id="test_scheduler_error_mailer" model="ir.cron">
<field name="name">Test Scheduler Error Mailer</field>
<field name="active" eval="False"/>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="interval_type">hours</field>
<field name="numbercall">-1</field> <!-- don't limit the number of calls -->
<field name="doall" eval="True"/>
<field name="email_template" ref="scheduler_error_mailer"/>
<field name="model" eval="'res.users'"/>
<field name="function" eval="'test_scheduler_failure'" />
<field name="args" eval="'()'"/>
</record>
</data>
</openerp>

50
scheduler_error_mailer/ir_cron_email_tpl.xml

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2012-2013 Akretion (http://www.akretion.com/)
The licence is in the file __openerp__.py
-->
<openerp>
<data noupdate="1">
<!-- Error Email template -->
<record id="scheduler_error_mailer" model="email.template">
<field name="name">Scheduler Error</field>
<field name="email_from">${object.user_id.user_email or ''}</field>
<field name="email_to">${object.user_id.user_email or ''}</field>
<field name="subject">[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED</field>
<field name="model_id" ref="base.model_ir_cron"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
<p>OpenERP tried to run the scheduler <em>${object.name or ''}</em> in the database <em>${ctx.get('dbname')}</em> but it failed. Here is the error message :</p>
<strong>
${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}
</strong>
<p>You may check the logs of the OpenERP server to get more information about this failure.</p>
<p>Properties of the scheduler <em>${object.name or ''}</em> :</p>
<ul>
<li>Model : ${object.model or ''}</li>
<li>Method : ${object.function or ''}</li>
<li>Arguments : ${object.args or ''}</li>
<li>Interval : ${object.interval_number or '0'} ${object.interval_type or ''}</li>
<li>Number of calls : ${object.numbercall or '0'}</li>
<li>Repeat missed : ${object.doall}</li>
<li>User : ${object.user_id.name or ''}</li>
</ul>
<p>
-- <br/>
Automatic e-mail sent by OpenERP. Do not reply.<br/>
Database : ${ctx.get('dbname')}
</p>
</div>
]]></field>
</record>
</data>
</openerp>

BIN
scheduler_error_mailer/static/src/img/icon.png

After

Width: 64  |  Height: 64  |  Size: 4.9 KiB

Loading…
Cancel
Save