From ce30068b1893cfc21ab4fc26034eb2f331466db0 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sun, 29 Sep 2013 23:54:55 +0200 Subject: [PATCH] Port to OpenERP 7.0. Add logo and screenshot. Add demo scheduler and test/debug function. --- scheduler_error_mailer/__init__.py | 9 ++- scheduler_error_mailer/__openerp__.py | 23 ++++--- .../images/scheduler_error_mailer.jpg | Bin 0 -> 29784 bytes scheduler_error_mailer/ir_cron.py | 41 +++++++++---- scheduler_error_mailer/ir_cron.xml | 34 +++++------ scheduler_error_mailer/ir_cron_demo.xml | 27 +++++++++ scheduler_error_mailer/ir_cron_email_tpl.xml | 56 ++++++++++++------ .../static/src/img/icon.png | Bin 0 -> 5032 bytes scheduler_error_mailer/test_fail_scheduler.py | 39 ------------ 9 files changed, 129 insertions(+), 100 deletions(-) create mode 100644 scheduler_error_mailer/images/scheduler_error_mailer.jpg create mode 100644 scheduler_error_mailer/ir_cron_demo.xml create mode 100644 scheduler_error_mailer/static/src/img/icon.png delete mode 100644 scheduler_error_mailer/test_fail_scheduler.py diff --git a/scheduler_error_mailer/__init__.py b/scheduler_error_mailer/__init__.py index 82ee32f70..36504c54b 100644 --- a/scheduler_error_mailer/__init__.py +++ b/scheduler_error_mailer/__init__.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- ############################################################################## # -# Scheduler error mailer module for OpenERP -# Copyright (C) 2012 Akretion +# 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 @@ -20,6 +21,4 @@ # ############################################################################## -import ir_cron -# import test_fail_scheduler - +from . import ir_cron diff --git a/scheduler_error_mailer/__openerp__.py b/scheduler_error_mailer/__openerp__.py index c477c4e64..b1cb4dfe6 100644 --- a/scheduler_error_mailer/__openerp__.py +++ b/scheduler_error_mailer/__openerp__.py @@ -1,8 +1,8 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# Scheduler error mailer module for OpenERP -# Copyright (C) 2012 Akretion +# 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 @@ -24,18 +24,25 @@ { - 'name': 'Scheduler error mailer', + 'name': 'Scheduler Error Mailer', + 'summary': 'Send an e-mail when a scheduler fails', 'version': '1.0', 'category': 'Extra Tools', 'license': 'AGPL-3', - 'description': """This module adds the possibility to send an e-mail when a scheduler raises an error""", + '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'], - 'init_xml': [], - 'update_xml': ['ir_cron.xml', 'ir_cron_email_tpl.xml'], - 'demo_xml': [], + 'data': [ + 'ir_cron.xml', + 'ir_cron_email_tpl.xml', + ], + 'demo': ['ir_cron_demo.xml'], + 'images': ['images/scheduler_error_mailer.jpg'], 'installable': True, 'active': False, } - diff --git a/scheduler_error_mailer/images/scheduler_error_mailer.jpg b/scheduler_error_mailer/images/scheduler_error_mailer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8a3af766a54c209723d9be24d05c1302ad01bbb GIT binary patch literal 29784 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 N(RfMZ6wk-L{{YH#n!f-5 literal 0 HcmV?d00001 diff --git a/scheduler_error_mailer/ir_cron.py b/scheduler_error_mailer/ir_cron.py index 8782eb0b7..770a78fbb 100644 --- a/scheduler_error_mailer/ir_cron.py +++ b/scheduler_error_mailer/ir_cron.py @@ -1,8 +1,8 @@ # -*- encoding: utf-8 -*- ################################################################################# # -# Scheduler error mailer module for OpenERP -# Copyright (C) 2012 Akretion +# 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 @@ -22,28 +22,45 @@ # ############################################################################## -from osv import osv, fields -from datetime import datetime +from openerp.osv import orm, fields +from openerp.tools.translate import _ +import logging +logger = logging.getLogger(__name__) -class ir_cron(osv.osv): +class ir_cron(orm.Model): _inherit = "ir.cron" _columns = { - 'email_template' : fields.many2one('email.template', 'E-mail template'), + '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, func, args, job_id, job_exception): + 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, func, 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 get it inside the mail template + 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} - id_mail_messsage = self.pool.get('email.template').send_mail(cr, uid, - my_cron.email_template.id, my_cron.id, force_send=True, context=context) + 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)) + diff --git a/scheduler_error_mailer/ir_cron.xml b/scheduler_error_mailer/ir_cron.xml index da3e844d8..ee1bcfd6d 100644 --- a/scheduler_error_mailer/ir_cron.xml +++ b/scheduler_error_mailer/ir_cron.xml @@ -1,24 +1,24 @@ - - - ir.cron.error.mailer.form - ir.cron - - form - - - - - - - - - - + + + + + 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 new file mode 100644 index 000000000..d8453b4bf --- /dev/null +++ b/scheduler_error_mailer/ir_cron_demo.xml @@ -0,0 +1,27 @@ + + + + + + + + + Test Scheduler Error Mailer + + + 1 + hours + -1 + + + + + + + + + diff --git a/scheduler_error_mailer/ir_cron_email_tpl.xml b/scheduler_error_mailer/ir_cron_email_tpl.xml index 5406d9aaf..8b4a0a7e0 100644 --- a/scheduler_error_mailer/ir_cron_email_tpl.xml +++ b/scheduler_error_mailer/ir_cron_email_tpl.xml @@ -1,32 +1,50 @@ - - + - - Scheduler error - ${object.user_id.user_email or ''} - [DB ${object._cr.dbname}] Scheduler '${object.name or ''}' FAILED - ${object.user_id.user_email or ''} - - - + + Scheduler Error + ${object.user_id.user_email or ''} + ${object.user_id.user_email or ''} + Scheduler '${object.name or ''}' FAILED + + + -${hasattr(context.get('ctx').get('job_exception'), 'value') and context.get('ctx').get('job_exception').value or context.get('ctx').get('job_exception')} +

OpenERP tried to run the scheduler ${object.name or ''} but it failed. Here is the error message :

-You may check the logs of OpenERP to get more information about this failure. + +${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'} + -The next action on this task is scheduled on ${object.nextcall or ''}. +

You may check the logs of the OpenERP server to get more information about this failure.

--- +

Properties of the scheduler ${object.name or ''} :

+
    +
  • Model : ${object.model or ''}
  • +
  • Method : ${object.function or ''}
  • +
  • Arguments : ${object.args or ''}
  • +
  • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
  • +
  • Number of calls : ${object.numbercall or '0'}
  • +
  • Repeat missed : ${object.doall}
  • +
  • User : ${object.user_id.name or ''}
  • +
+ +

+--
Automatic e-mail sent by OpenERP. Do not reply. - ]]> - - +

+ + ]]>
+
+ + +
diff --git a/scheduler_error_mailer/static/src/img/icon.png b/scheduler_error_mailer/static/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6b22abf97322d7e40e7a605b813376aad99937f9 GIT binary patch literal 5032 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 yv1*|EnN!URIR7saFr*9I3zQ&NEv<0000 -# @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 osv import fields, osv -from tools.translate import _ - -class test_fail_scheduler(osv.osv_memory): - _name = "test.fail.scheduler" - _description = "Test scheduler failure" - - def test_fail(self, cr, uid, context=None): - """ This a test fail, only for debugging purpose - DO NOT UNCOMMENT IMPORT IN init.py IN PRODUCTION ENVIRONNEMENT - """ - - raise osv.except_osv(_('Error :'), _("task failure")) - # context['tytytyty'] - -test_fail_scheduler()