diff --git a/scheduler_error_mailer/README.rst b/scheduler_error_mailer/README.rst new file mode 100644 index 000000000..269dec34c --- /dev/null +++ b/scheduler_error_mailer/README.rst @@ -0,0 +1,67 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +====================== +Scheduler Error Mailer +====================== + +This module adds the possibility to send an e-mail when a scheduler raises +an error. + +Configuration +============= + +To configure this module, you need to: + +#. Go to Settings -> Technical -> Automation -> Scheduled Actions +#. Choose the scheduled Actions you want to send the error email and select the E-mail Template in the Error E-mail Template field. + +Usage +===== + +To use this module, you need to: + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/149/9.0 + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Sébastien BEAU +* David Beal +* Alexis de Lattre +* Sodexis + + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/scheduler_error_mailer/__init__.py b/scheduler_error_mailer/__init__.py index 36504c54b..cca6d9455 100644 --- a/scheduler_error_mailer/__init__.py +++ b/scheduler_error_mailer/__init__.py @@ -1,24 +1,6 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# Scheduler Error Mailer module for OpenERP -# Copyright (C) 2012-2013 Akretion (http://www.akretion.com/) -# @author: Sébastien Beau -# @author Alexis de Lattre -# -# 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 . -# -############################################################################## +# © 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre +# © 2016 Sodexis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from . import ir_cron +from . import models diff --git a/scheduler_error_mailer/__openerp__.py b/scheduler_error_mailer/__openerp__.py index e1b2545a5..cee08d1c7 100644 --- a/scheduler_error_mailer/__openerp__.py +++ b/scheduler_error_mailer/__openerp__.py @@ -1,48 +1,21 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Scheduler Error Mailer module for OpenERP -# Copyright (C) 2012-2013 Akretion (http://www.akretion.com/) -# @author: Sébastien Beau -# @author David Beal -# @author Alexis de Lattre -# -# 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 . -# -############################################################################## - +# -*- coding: utf-8 -*- +# © 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre +# © 2016 Sodexis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'Scheduler Error Mailer', - 'summary': 'Send an e-mail when a scheduler fails', - 'version': '8.0.1.0.0', + 'version': '9.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)", + 'author': "Akretion,Sodexis,Odoo Community Association (OCA)", 'website': 'http://www.akretion.com/', - 'depends': ['email_template'], + 'depends': ['mail'], 'data': [ - 'ir_cron.xml', - 'ir_cron_email_tpl.xml', + 'data/ir_cron_email_tpl.xml', + 'views/ir_cron.xml', ], - 'demo': ['ir_cron_demo.xml'], + 'demo': ['demo/ir_cron_demo.xml'], 'images': ['images/scheduler_error_mailer.jpg'], - 'installable': False, + 'installable': True, } diff --git a/scheduler_error_mailer/ir_cron_email_tpl.xml b/scheduler_error_mailer/data/ir_cron_email_tpl.xml similarity index 58% rename from scheduler_error_mailer/ir_cron_email_tpl.xml rename to scheduler_error_mailer/data/ir_cron_email_tpl.xml index d0bd7859b..b8e6a2598 100644 --- a/scheduler_error_mailer/ir_cron_email_tpl.xml +++ b/scheduler_error_mailer/data/ir_cron_email_tpl.xml @@ -1,21 +1,24 @@ - - - - - - Scheduler Error - ${object.user_id.user_email or ''} - ${object.user_id.user_email or ''} - [DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED - - - + + + + + Scheduler Error + ${object.user_id.email or ''} + ${object.user_id.email or ''} + [DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED + + + +

OpenERP tried to run the scheduler ${object.name or ''} in the database ${ctx.get('dbname')} but it failed. Here is the error message :

@@ -43,8 +46,9 @@ Automatic e-mail sent by OpenERP. Do not reply.
Database : ${ctx.get('dbname')}

- ]]>
-
+ ]]> +
+
-
-
+ + diff --git a/scheduler_error_mailer/demo/ir_cron_demo.xml b/scheduler_error_mailer/demo/ir_cron_demo.xml new file mode 100644 index 000000000..08368e8e7 --- /dev/null +++ b/scheduler_error_mailer/demo/ir_cron_demo.xml @@ -0,0 +1,27 @@ + + + + + + + + Test Scheduler Error Mailer + + + 1 + hours + -1 + + + ir.cron + _test_scheduler_failure + + + + + diff --git a/scheduler_error_mailer/ir_cron.py b/scheduler_error_mailer/ir_cron.py deleted file mode 100644 index 548728bf4..000000000 --- a/scheduler_error_mailer/ir_cron.py +++ /dev/null @@ -1,76 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Scheduler Error Mailer module for OpenERP -# Copyright (C) 2012-2013 Akretion (http://www.akretion.com/) -# @author: Sébastien Beau -# @author David Beal -# @author Alexis de Lattre -# -# 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 . -# -############################################################################## - -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_id': fields.many2one( - 'email.template', - 'Error E-mail Template', - oldname="email_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_id: - # 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.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) diff --git a/scheduler_error_mailer/ir_cron.xml b/scheduler_error_mailer/ir_cron.xml deleted file mode 100644 index 74a3d3edf..000000000 --- a/scheduler_error_mailer/ir_cron.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - ir.cron.error.mailer.form - ir.cron - - - - - - - - - - - diff --git a/scheduler_error_mailer/ir_cron_demo.xml b/scheduler_error_mailer/ir_cron_demo.xml deleted file mode 100644 index 4c108040c..000000000 --- a/scheduler_error_mailer/ir_cron_demo.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - Test Scheduler Error Mailer - - - 1 - hours - -1 - - ir.cron - _test_scheduler_failure - - - - - diff --git a/scheduler_error_mailer/models/__init__.py b/scheduler_error_mailer/models/__init__.py new file mode 100644 index 000000000..91c8e5e18 --- /dev/null +++ b/scheduler_error_mailer/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# © 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre +# © 2016 Sodexis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import ir_cron diff --git a/scheduler_error_mailer/models/ir_cron.py b/scheduler_error_mailer/models/ir_cron.py new file mode 100644 index 000000000..a6134be15 --- /dev/null +++ b/scheduler_error_mailer/models/ir_cron.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# © 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre +# © 2016 Sodexis +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import models, fields, api, _ +from openerp.exceptions import UserError +import logging + + +_logger = logging.getLogger(__name__) + + +class IrCron(models.Model): + _inherit = "ir.cron" + + email_template_id = fields.Many2one( + comodel_name="mail.template", + string="Error E-mail Template", + help="Select the email template that will be sent when " + "this scheduler fails." + ) + + @api.model + def _handle_callback_exception( + self, model_name, method_name, args, job_id, job_exception): + res = super(IrCron, self)._handle_callback_exception( + model_name, method_name, args, job_id, job_exception) + + my_cron = self.browse(job_id) + + if my_cron.email_template_id: + # we put the job_exception in context to be able to print it inside + # the email template + context = { + 'job_exception': job_exception, + 'dbname': self._cr.dbname, + } + + _logger.debug( + "Sending scheduler error email with context=%s", context) + + self.env['mail.template'].browse( + my_cron.email_template_id.id + ).with_context(context).sudo().send_mail( + my_cron.id, force_send=True) + + return res + + @api.model + def _test_scheduler_failure(self): + """This function is used to test and debug this module""" + + raise UserError( + _("Task failure with UID = %d.") % self._uid) diff --git a/scheduler_error_mailer/views/ir_cron.xml b/scheduler_error_mailer/views/ir_cron.xml new file mode 100644 index 000000000..3ade1e1b8 --- /dev/null +++ b/scheduler_error_mailer/views/ir_cron.xml @@ -0,0 +1,22 @@ + + + + + + + ir.cron.error.mailer.form + ir.cron + + + + + + + + +