Browse Source

[MIG][9.0] scheduler_error_mailer

pull/1297/head
Atchuthan, Sodexis 9 years ago
committed by Pedro M. Baeza
parent
commit
57cf861147
  1. 67
      scheduler_error_mailer/README.rst
  2. 26
      scheduler_error_mailer/__init__.py
  3. 47
      scheduler_error_mailer/__openerp__.py
  4. 38
      scheduler_error_mailer/data/ir_cron_email_tpl.xml
  5. 27
      scheduler_error_mailer/demo/ir_cron_demo.xml
  6. 76
      scheduler_error_mailer/ir_cron.py
  7. 24
      scheduler_error_mailer/ir_cron.xml
  8. 26
      scheduler_error_mailer/ir_cron_demo.xml
  9. 6
      scheduler_error_mailer/models/__init__.py
  10. 55
      scheduler_error_mailer/models/ir_cron.py
  11. 22
      scheduler_error_mailer/views/ir_cron.xml

67
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
<https://github.com/OCA/server-tools/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 <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
Contributors
------------
* Sébastien BEAU <sebastien.beau@akretion.com>
* David Beal <bealdavid@gmail.com>
* Alexis de Lattre <alexis.delattre@akretion.com>
* Sodexis <dev@sodexis.com>
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.

26
scheduler_error_mailer/__init__.py

@ -1,24 +1,6 @@
# -*- coding: utf-8 -*- # -*- 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/>.
#
##############################################################################
# © 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

47
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 <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/>.
#
##############################################################################
# -*- 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', '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', 'category': 'Extra Tools',
'license': 'AGPL-3', '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/', 'website': 'http://www.akretion.com/',
'depends': ['email_template'],
'depends': ['mail'],
'data': [ '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'], 'images': ['images/scheduler_error_mailer.jpg'],
'installable': True, 'installable': True,
} }

38
scheduler_error_mailer/ir_cron_email_tpl.xml → scheduler_error_mailer/data/ir_cron_email_tpl.xml

@ -1,21 +1,24 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
Copyright (C) 2012-2013 Akretion (http://www.akretion.com/)
scheduler_error_mailer for Odoo
Copyright (C) 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre
Copyright (C) 2016 Sodexis
The licence is in the file __openerp__.py 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[
<odoo>
<data noupdate="1">
<!-- Error Email template -->
<record id="scheduler_error_mailer" model="mail.template">
<field name="name">Scheduler Error</field>
<field name="email_from">${object.user_id.email or ''}</field>
<field name="email_to">${object.user_id.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; "> <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> <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>
@ -43,8 +46,9 @@ Automatic e-mail sent by OpenERP. Do not reply.<br/>
Database : ${ctx.get('dbname')} Database : ${ctx.get('dbname')}
</p> </p>
</div> </div>
]]></field>
</record>
]]>
</field>
</record>
</data>
</openerp>
</data>
</odoo>

27
scheduler_error_mailer/demo/ir_cron_demo.xml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
scheduler_error_mailer for Odoo
Copyright (C) 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre
Copyright (C) 2016 Sodexis
The licence is in the file __openerp__.py
-->
<odoo>
<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="model">ir.cron</field>
<field name="function">_test_scheduler_failure</field>
<field name="email_template_id" ref="scheduler_error_mailer.scheduler_error_mailer"/>
</record>
</data>
</odoo>

76
scheduler_error_mailer/ir_cron.py

@ -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 <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_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)

24
scheduler_error_mailer/ir_cron.xml

@ -1,24 +0,0 @@
<?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_id" />
</field>
</field>
</record>
</data>
</openerp>

26
scheduler_error_mailer/ir_cron_demo.xml

@ -1,26 +0,0 @@
<?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="model">ir.cron</field>
<field name="function">_test_scheduler_failure</field>
<field name="email_template_id" ref="scheduler_error_mailer"/>
</record>
</data>
</openerp>

6
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

55
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)

22
scheduler_error_mailer/views/ir_cron.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
scheduler_error_mailer for Odoo
Copyright (C) 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre
Copyright (C) 2016 Sodexis
The licence is in the file __openerp__.py
-->
<odoo>
<record id="ir_cron_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_id"/>
</field>
</field>
</record>
</odoo>
Loading…
Cancel
Save