Jairo Llopis
10 years ago
committed by
Pedro M. Baeza
9 changed files with 323 additions and 0 deletions
-
24scheduler_error_mailer/__init__.py
-
48scheduler_error_mailer/__openerp__.py
-
76scheduler_error_mailer/i18n/scheduler_error_mailer.pot
-
BINscheduler_error_mailer/images/scheduler_error_mailer.jpg
-
75scheduler_error_mailer/ir_cron.py
-
24scheduler_error_mailer/ir_cron.xml
-
26scheduler_error_mailer/ir_cron_demo.xml
-
50scheduler_error_mailer/ir_cron_email_tpl.xml
-
BINscheduler_error_mailer/static/description/icon.png
@ -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 |
@ -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': '8.0.1.0.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,Odoo Community Association (OCA)", |
|||
'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, |
|||
} |
@ -0,0 +1,76 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * scheduler_error_mailer |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 8.0rc1\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2014-09-18 11:55+0000\n" |
|||
"PO-Revision-Date: 2014-09-18 11:55+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: scheduler_error_mailer |
|||
#: model:email.template,body_html:scheduler_error_mailer.scheduler_error_mailer |
|||
msgid "\n" |
|||
"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; \">\n" |
|||
"\n" |
|||
"<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>\n" |
|||
"\n" |
|||
"<strong>\n" |
|||
"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" |
|||
"</strong>\n" |
|||
"\n" |
|||
"<p>You may check the logs of the OpenERP server to get more information about this failure.</p>\n" |
|||
"\n" |
|||
"<p>Properties of the scheduler <em>${object.name or ''}</em> :</p>\n" |
|||
"<ul>\n" |
|||
"<li>Model : ${object.model or ''}</li>\n" |
|||
"<li>Method : ${object.function or ''}</li>\n" |
|||
"<li>Arguments : ${object.args or ''}</li>\n" |
|||
"<li>Interval : ${object.interval_number or '0'} ${object.interval_type or ''}</li>\n" |
|||
"<li>Number of calls : ${object.numbercall or '0'}</li>\n" |
|||
"<li>Repeat missed : ${object.doall}</li>\n" |
|||
"<li>User : ${object.user_id.name or ''}</li>\n" |
|||
"</ul>\n" |
|||
"\n" |
|||
"<p>\n" |
|||
"-- <br/>\n" |
|||
"Automatic e-mail sent by OpenERP. Do not reply.<br/>\n" |
|||
"Database : ${ctx.get('dbname')}\n" |
|||
"</p>\n" |
|||
"</div>\n" |
|||
" " |
|||
msgstr "" |
|||
|
|||
#. module: scheduler_error_mailer |
|||
#: code:addons/scheduler_error_mailer/ir_cron.py:74 |
|||
#, python-format |
|||
msgid "Error :" |
|||
msgstr "" |
|||
|
|||
#. module: scheduler_error_mailer |
|||
#: field:ir.cron,email_template:0 |
|||
msgid "Error E-mail Template" |
|||
msgstr "" |
|||
|
|||
#. module: scheduler_error_mailer |
|||
#: help:ir.cron,email_template:0 |
|||
msgid "Select the email template that will be sent when this scheduler fails." |
|||
msgstr "" |
|||
|
|||
#. module: scheduler_error_mailer |
|||
#: code:addons/scheduler_error_mailer/ir_cron.py:75 |
|||
#, python-format |
|||
msgid "Task failure with UID = %d." |
|||
msgstr "" |
|||
|
|||
#. module: scheduler_error_mailer |
|||
#: model:email.template,subject:scheduler_error_mailer.scheduler_error_mailer |
|||
msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" |
|||
msgstr "" |
After Width: 900 | Height: 364 | Size: 29 KiB |
@ -0,0 +1,75 @@ |
|||
# -*- 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 import SUPERUSER_ID |
|||
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, SUPERUSER_ID, my_cron.email_template.id, my_cron.id, |
|||
force_send=True, context=context) |
|||
|
|||
return res |
|||
|
|||
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) |
@ -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> |
@ -0,0 +1,26 @@ |
|||
<?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">ir.cron</field> |
|||
<field name="function">_test_scheduler_failure</field> |
|||
</record> |
|||
|
|||
</data> |
|||
</openerp> |
@ -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> |
After Width: 64 | Height: 64 | Size: 4.9 KiB |
Write
Preview
Loading…
Cancel
Save
Reference in new issue