From 5f27c49e039e2fe8d18a3e29f0f5cad497525d6d Mon Sep 17 00:00:00 2001 From: sebastien beau Date: Thu, 24 Feb 2011 16:51:23 +0100 Subject: [PATCH 01/34] [INIT] intial import --- scheduler_error_mailer/__init__.py | 23 +++++++++++ scheduler_error_mailer/__openerp__.py | 38 ++++++++++++++++++ scheduler_error_mailer/ir_cron.py | 55 +++++++++++++++++++++++++++ scheduler_error_mailer/ir_cron.xml | 28 ++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 scheduler_error_mailer/__init__.py create mode 100644 scheduler_error_mailer/__openerp__.py create mode 100644 scheduler_error_mailer/ir_cron.py create mode 100644 scheduler_error_mailer/ir_cron.xml diff --git a/scheduler_error_mailer/__init__.py b/scheduler_error_mailer/__init__.py new file mode 100644 index 000000000..78a455ba8 --- /dev/null +++ b/scheduler_error_mailer/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Asterisk Click2Dial module for OpenERP +# Copyright (C) 2010 Sébastien BEAU +# +# 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 . +# +############################################################################## + +import ir_cron + diff --git a/scheduler_error_mailer/__openerp__.py b/scheduler_error_mailer/__openerp__.py new file mode 100644 index 000000000..aead8b9fd --- /dev/null +++ b/scheduler_error_mailer/__openerp__.py @@ -0,0 +1,38 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# Model module for OpenERP +# Copyright (C) 2010 Sébastien BEAU +# +# 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 . +# +############################################################################## + + +{ + 'name': 'Scheduler Error Mailer', + 'version': '0.1', + 'category': 'Generic Modules/Others', + 'license': 'AGPL-3', + 'description': """This module dfkdsjfkdsjkfjksadd the posibility to send a email when a scheduler raise an error""", + 'author': 'Akretion', + 'website': 'http://www.akretion.com/', + 'depends': ['poweremail'], + 'init_xml': [], + 'update_xml': ['ir_cron.xml'], + 'demo_xml': [], + 'installable': True, + 'active': False, +} + diff --git a/scheduler_error_mailer/ir_cron.py b/scheduler_error_mailer/ir_cron.py new file mode 100644 index 000000000..510f11c8f --- /dev/null +++ b/scheduler_error_mailer/ir_cron.py @@ -0,0 +1,55 @@ +# -*- encoding: utf-8 -*- +################################################################################# +# # +# Model module for OpenERP # +# Copyright (C) 2010 Sébastien BEAU # +# # +# 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 osv, fields +import netsvc + + +class ir_cron(osv.osv, netsvc.Agent): + _inherit = "ir.cron" + + _columns = { + 'email_to' : fields.char('TO', size=256, help="If an error occure with this scheduler an email will be send"), + 'message' : fields.text('Message', help="If an error occure with this scheduler this message will be send via email"), + 'send_email' : fields.boolean('Active'), + 'email_account' : fields.many2one('poweremail.core_accounts', 'FROM') + } + + def _handle_callback_exception(self, cr, uid, model, func, args, job_id, job_exception): + res = super(ir_cron, self)._handle_callback_exception(cr, uid, model, func, args, job_id, job_exception) + job = self.read(cr, uid, job_id, ['send_email', 'message', 'email_TO', 'email_account', 'name']) + #TODO USE POWEREMAIL TEMPLATE + if job['send_email']: + addresses = {'To' : job['email_TO']} + mail_obj = self.pool.get('poweremail.mailbox') + id = mail_obj.create(cr, uid, { + 'pem_to' : job['email_TO'], + 'pem_subject' : "OPENERP : error when excecuting scheduler " + job["name"], + 'pem_body_text' : job['message'], + 'pem_account_id' : job['email_account'][0], + 'mail_type' : 'text/plain', + 'folder' : 'outbox', + 'state' :'na', + }) + mail_obj.send_this_mail(cr, uid, [id]) + return res +ir_cron() + diff --git a/scheduler_error_mailer/ir_cron.xml b/scheduler_error_mailer/ir_cron.xml new file mode 100644 index 000000000..33a6d3dfe --- /dev/null +++ b/scheduler_error_mailer/ir_cron.xml @@ -0,0 +1,28 @@ + + + + + + + ir.cron.error.mailer.form + ir.cron + + form + + + + + + + + + + + + + + From c599853fc3c40e261ea6d67e228471c1da72e9f9 Mon Sep 17 00:00:00 2001 From: David BEAL Date: Mon, 4 Jun 2012 13:13:04 +0200 Subject: [PATCH 02/34] Now uses an email template instead of a simple mail Add a default e-mail template Add the code we used to test the failure of scheduler (the import directive is commented) --- scheduler_error_mailer/__init__.py | 6 +- scheduler_error_mailer/__openerp__.py | 19 +++-- scheduler_error_mailer/ir_cron.py | 80 +++++++++---------- scheduler_error_mailer/ir_cron.xml | 8 +- scheduler_error_mailer/ir_cron_email_tpl.xml | 32 ++++++++ scheduler_error_mailer/test_fail_scheduler.py | 39 +++++++++ 6 files changed, 125 insertions(+), 59 deletions(-) create mode 100644 scheduler_error_mailer/ir_cron_email_tpl.xml create mode 100644 scheduler_error_mailer/test_fail_scheduler.py diff --git a/scheduler_error_mailer/__init__.py b/scheduler_error_mailer/__init__.py index 78a455ba8..82ee32f70 100644 --- a/scheduler_error_mailer/__init__.py +++ b/scheduler_error_mailer/__init__.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- ############################################################################## # -# Asterisk Click2Dial module for OpenERP -# Copyright (C) 2010 Sébastien BEAU +# Scheduler error mailer module for OpenERP +# Copyright (C) 2012 Akretion +# @author: Sébastien Beau # # 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,4 +21,5 @@ ############################################################################## import ir_cron +# import test_fail_scheduler diff --git a/scheduler_error_mailer/__openerp__.py b/scheduler_error_mailer/__openerp__.py index aead8b9fd..c477c4e64 100644 --- a/scheduler_error_mailer/__openerp__.py +++ b/scheduler_error_mailer/__openerp__.py @@ -1,8 +1,11 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# Model module for OpenERP -# Copyright (C) 2010 Sébastien BEAU +# Scheduler error mailer module for OpenERP +# Copyright (C) 2012 Akretion +# @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 @@ -21,16 +24,16 @@ { - 'name': 'Scheduler Error Mailer', - 'version': '0.1', - 'category': 'Generic Modules/Others', + 'name': 'Scheduler error mailer', + 'version': '1.0', + 'category': 'Extra Tools', 'license': 'AGPL-3', - 'description': """This module dfkdsjfkdsjkfjksadd the posibility to send a email when a scheduler raise an error""", + 'description': """This module adds the possibility to send an e-mail when a scheduler raises an error""", 'author': 'Akretion', 'website': 'http://www.akretion.com/', - 'depends': ['poweremail'], + 'depends': ['email_template'], 'init_xml': [], - 'update_xml': ['ir_cron.xml'], + 'update_xml': ['ir_cron.xml', 'ir_cron_email_tpl.xml'], 'demo_xml': [], 'installable': True, 'active': False, diff --git a/scheduler_error_mailer/ir_cron.py b/scheduler_error_mailer/ir_cron.py index 510f11c8f..8782eb0b7 100644 --- a/scheduler_error_mailer/ir_cron.py +++ b/scheduler_error_mailer/ir_cron.py @@ -1,55 +1,49 @@ # -*- encoding: utf-8 -*- ################################################################################# -# # -# Model module for OpenERP # -# Copyright (C) 2010 Sébastien BEAU # -# # -# 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 . # -# # -################################################################################# +# +# Scheduler error mailer module for OpenERP +# Copyright (C) 2012 Akretion +# @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 osv import osv, fields -import netsvc +from datetime import datetime -class ir_cron(osv.osv, netsvc.Agent): +class ir_cron(osv.osv): _inherit = "ir.cron" _columns = { - 'email_to' : fields.char('TO', size=256, help="If an error occure with this scheduler an email will be send"), - 'message' : fields.text('Message', help="If an error occure with this scheduler this message will be send via email"), - 'send_email' : fields.boolean('Active'), - 'email_account' : fields.many2one('poweremail.core_accounts', 'FROM') + 'email_template' : fields.many2one('email.template', 'E-mail template'), } - def _handle_callback_exception(self, cr, uid, model, func, args, job_id, job_exception): - res = super(ir_cron, self)._handle_callback_exception(cr, uid, model, func, args, job_id, job_exception) - job = self.read(cr, uid, job_id, ['send_email', 'message', 'email_TO', 'email_account', 'name']) - #TODO USE POWEREMAIL TEMPLATE - if job['send_email']: - addresses = {'To' : job['email_TO']} - mail_obj = self.pool.get('poweremail.mailbox') - id = mail_obj.create(cr, uid, { - 'pem_to' : job['email_TO'], - 'pem_subject' : "OPENERP : error when excecuting scheduler " + job["name"], - 'pem_body_text' : job['message'], - 'pem_account_id' : job['email_account'][0], - 'mail_type' : 'text/plain', - 'folder' : 'outbox', - 'state' :'na', - }) - mail_obj.send_this_mail(cr, uid, [id]) - return res -ir_cron() + def _handle_callback_exception(self, cr, uid, model, func, args, job_id, job_exception): + + res = super(ir_cron, self)._handle_callback_exception(cr, uid, model, func, 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 + 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) + + return res diff --git a/scheduler_error_mailer/ir_cron.xml b/scheduler_error_mailer/ir_cron.xml index 33a6d3dfe..da3e844d8 100644 --- a/scheduler_error_mailer/ir_cron.xml +++ b/scheduler_error_mailer/ir_cron.xml @@ -1,7 +1,6 @@ @@ -16,10 +15,7 @@ - - - - + diff --git a/scheduler_error_mailer/ir_cron_email_tpl.xml b/scheduler_error_mailer/ir_cron_email_tpl.xml new file mode 100644 index 000000000..5406d9aaf --- /dev/null +++ b/scheduler_error_mailer/ir_cron_email_tpl.xml @@ -0,0 +1,32 @@ + + + + + + + + + Scheduler error + ${object.user_id.user_email or ''} + [DB ${object._cr.dbname}] Scheduler '${object.name or ''}' FAILED + ${object.user_id.user_email or ''} + + + + + + diff --git a/scheduler_error_mailer/test_fail_scheduler.py b/scheduler_error_mailer/test_fail_scheduler.py new file mode 100644 index 000000000..937f88e6e --- /dev/null +++ b/scheduler_error_mailer/test_fail_scheduler.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Scheduler error mailer module for OpenERP +# Copyright (C) 2012 Akretion +# @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 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() From c3c5b0e7de800cbef09266b78b04701f1a29a50b Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sun, 29 Sep 2013 23:54:55 +0200 Subject: [PATCH 03/34] 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 | 47 ++++++++++---- scheduler_error_mailer/ir_cron.xml | 34 +++++----- scheduler_error_mailer/ir_cron_demo.xml | 27 ++++++++ scheduler_error_mailer/ir_cron_email_tpl.xml | 58 ++++++++++++------ .../static/src/img/icon.png | Bin 0 -> 5032 bytes scheduler_error_mailer/test_fail_scheduler.py | 39 ------------ 9 files changed, 135 insertions(+), 102 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 zcmeEu1z254n&`RM#YqSnG)QoQOM-^r2^QQfxVv8@5Fj{#5Zv8^OMu|+PH?!m2Df*+ zdwM46H?uqYX7_#X?e^s>s?I4n_4{9c)j4-lcZ*__y#N3IOgt2>w3kt_>iA z%@Yyy>ks(L4+IB~fQSS}MnOe`HK@D?z=7c5;Sk^v5fKnztvzA&0K$Dl>_@D^NDt)o zz!bJPY(9}`$du2^T5uJH52)Dn?R-&C@$d-CqXIFR6$mrPk#N^cU%+m78>e@PVV{_~9==l4|>Dl?kHd4$h5K+6iRl5 z16+N(VN^USjwR~DUqJg6vVRUR-~S`X{tDRN;Fgybiq!>iL6 zbHid%4TtSpQ(%PfRLP=GiFq%GpjajayecUx-I!I|AB?w3#!tMw&N68vl63Xs*|Tz z?*6q^!43$Ffy77zINCfWo`! zD@jb6szN_o`N}}1d>r~1t1JjEvqnuPGSSbkd5|>GF&{OEG-lZ_SUH|Eilw;IR+rdY za=+6Jm)d%}M)SMHI1!UF+EqclOO&X)3d$oJfC`$8(zSTfZtwQ?Q1XfYIF*?0hJ*qN zJSzLeI77jwU5Z1F*qyG9HJrLcT!d08()pB7YH8W+8tsk!W2OClgVDk_^`Epd0^j%o zl7#Ty5+pa~5v5hNqbKg%mDOS6h9Ucb3n(6kz9NW=P`<;?(f9!t4XtzKZN-}U$Vxm9 zR<_8LIKbcCm$%b8HBDjC=H+*3bN{-^fMu5FQa)oWEkH=fN)zW}vw#T5@+*ToK=Z*J zAdIW4CDgU^I3ypNH~@i;#LnG|GchJBmBM2<-us(SZWQ4P@+zW!GZIZIxM@jYJtp88 zCq{o~1O>>MBZ?lB=(w8F3Mhy(Lpha^J3zAj5LLT{_~n9;2FG)#=?ph08B?GpGkG_(sL)ZZ@ML0_Oxu$H|4RS)V@m7Z ziioF|t6>aXMfy$kL(!TNvHU`Fc(>yp6%~0g&d`kkblVVUlMF+4)#&cKcDgKc#p6j? zd|_cK*VT|xXmZYMJXd9#n}9hpiPywRo61v)PL|s0K&b&m3-T3!7%IrJ1$H}5qUe+! z^WeCBG|ri~%V}MaG?{F`{zAmY2ef*BfVEk`4>$Fazqs*`L9wdQH6E+9qmR;_^!P0h z!Q08(nM?YiHEmNZgL8SLo8u0^NcEM>)Wa-&6dKe^@6Q8VVcTkmf1Q9|MvteBJup31 zLkmj367f20p=7j=9^^YaU4D1tIf=FXonMfXq-}YAMlJYR;83kZhgvC0Gf8(RTtigP zA%3&(*RAD~@k+6(0NOXmhH@a}fjRos)f9ziiZf3IQi@!{UxiUuR6W$_vZSnK&*vKM zHW*t>T$#jy==gV9%Ir31m_FQmtRX#>@cKhLw&XqK=g4F{OwFsL?CoY-5B;k?8F22d zrt?r}4YWP*Nd$n^Cd{b*M90^uC~_RGQ@Acnf%pjl_}g|I$cIab1Aiq@4RF=bp#X%#{SdcFwfJKa<-I%L#Sl~R zn{kJfd#3bqRQSqU#9@9W2&+DGt6?tu^x3J*e8S5~ddv>%^e$JnsaiMH` z$ed%{Xz@}(T}E?{rhty7mg){zsc;~i-I~eY#CvZu@zMEFCQA7P{|?F^m7xu5cfoWC zX=AyI7f}m@2gasjj+}LN;yjkK5Onlg&PrQT<7F}ubFTQ^HsARk9Ij#4EL>qZX>a6i z!U4~V0YqR>yq~b-@z{FQk_T_5hIV(6>BuKu*U;)2sYC>0ULF$uOH3Q{v;#(!SoN?1 z!)02F75ZUyrmZ>7&%|qz#NKX4U>PXYdpWC4yVSB~LXN`1xH;D38#Co0+9Jz z2s)4R-7Ms%r#`$;?F&&&PZLFVX@2bshTooS1Wb%VM(xE+K+_onp^m)CmI7Q6iBW|;C@19iP_7xoIgH{hEf8J5&k_}g zR>Y4yu6}75f^ONF%_6=e-llFn2ScYKc>Zi<)CV)gq;!KVz4ixe9M$?Rz< zCXr^WX$cmOKCXKJ2^K$Cb4=waX^gYuX~KJgd5hI5353fCWbh$UiBZVNx(TCF9{G!EWylbQF%%w@c=V49nn$uw}rbxH$79!^PB5Y7XZ!lI%4BdQq-afDm|2cOvYUXVs`m z7)U${Blu`xo2#T5?TrL10%%mO-mrQbW zwW_+xU01JKcbNH^LcB)b97_eIPPFkBF- zydEiZOpq-%V?kM*Bhz!z7PGO-B!xC=6379IAa8!U+6)d*7$4=*QXa$v<1tpH)k6LH zY(4Kl-|m3xz|--9P^_1A11W=+O9H>K9&TV`L#_gTfC@!uiPj>M} zbh$OEV|x*q5?70zqLb~z8pb!i*ArBlR!S_wU7EDnNjHYA5j3~(kbudJgDd0Ng$M-? zf;XPG?g;9V86Dq_P#){t7_rtr`#f4@yQ_lv(cq@!reGDT+ErUNq4CSQeQ0f`_W59= zI!vetBRuF*tCAik&)9JmMt%D9P@Kk?pO7AW= zUv^*FJm`Gov6ukD1y59BQ+Jy5TaJRx~Xw=M^G z_7w_kpeV3`)A~)|D%0MZ)auEWVLx?c?72G7>0pD@HT&LXu%e1$HkV{k@FS$G55C>$=VU&Ld7&qM@ zK53$boCgbjUbyxBxbQ*nS`>h>b$-+IKFo=f-tQs1rAT*-?Qw^E@6M4lWR3aoSa_xn znLgtxQx{qU=)jsHm(LH{-hSdh!SQ7&L+E~{6h!^u4sbz7cgTbM8>5EroZSJbS!Zil zcffriyw750C8zFpz>vb#(Yre!Fyo5<4%ndcyb!qq+T;)m|6OQE1T;PBvex%zV=378 z;NZlEf*q4uYRi4?SPVt&z(Nw>%OS+X|9Xb;JzAVqljR{~&ENs2kw3Vhg&Q#GSA6JE zb5SYX|LwF;$ao5e3M-G}M+AE_8HJ4N{D=?nA5oEt2JDrQz=h{x{if12`Hi9^?i?_s-|XiNYSCN;O?Wf^zu_Hl;c@j87^`lA#4BSWQ@Qyw6^NE#>I zL_rAwEZ0o-oLvZeJ!D*zZH~S4Q+lXs{#zj0SC}fo-LIJ>KVggOzC`!q#)nU%2-Q`E z5gZZjx1?ft49E9Z)%YHMvUIfNm5;s8XCZXjE+=_d7TMUyu`X( zyU{n#?aw?KUS>}Il6BRRrF+d z^XZ|)rr?J?L-efSE@1HnT$K4Fu3o%7?C{b) zU#^3jCg|6lHBn(Tg-ko+pB_!c#XnZ8pnIf%+~v6nhXPL9l+c$hnd^3UP-p06aQQx2 z11GVHwcmY1a!y!t&p!Wi}5LI}QC zG7Y0I_WFxXq;5WQzPs@tyTLo*y3BEzt|=w^egOHd`2jt?rHu0qxbeWc!HaSBG*YW# ze$sivhjoKbqPZZ1!+b)t>1dF>`Slwq&)d;gHibQDL8xiM2+_Xw5dg`t%)^S(d2v0? z`a#Dv#%M_^T>Vh#djxyBwk?Z>hw|E{N4>dBH!+KqwMT6V`0x89aj=CLBJ5Cj$is4Y zbA)v_J#VC=mc4Z-4|`Nt!lRK^A$E z|4{f22;%>EVrbz}fpB$h}o#>Oy1v&QX&gAd@<;Vj(9iFuCaGmYZvgw+d(iXlKs*Ehf zLLXfz*w`dnHe6Rs`IO#USSugsCN`4d=#)464SkExRT7~Y1SY>8b5%e!7tlwZ^g7`REd7=L zMxpe@L`Lw7j1L}_3h04)$h?#`B}wlPf23H3ka#3vVL*~!6~46L;2M*GCli=u;8?C0 z2S4iIeLZI*gXBK+FyXUSiv=jzWCh&@tyIqI6NiX1V%KAoj0n0G+7|E2#c}uCM-A03 zG;&?7hu|`BS^5OB#qI<$4n6I)Gg_C{!TYu_TU-HGKCyeia5|^g$ zbhPlWrQH90w~+I-oO_!$XUd06Y^~MM%$Zbd2~qMgDgdA?@rp6#RJa^5k4BsQmSCEu z-_tIg0f+qP!~MtsH(z8VZ_42(YhxATHJ{`p8;5ofg=gB}6r&U)*c6YRJ}fik`>4GC zq$e%utvG^jY6J>2F+!GLF}z6FG^aA_!%$JTdC>G~l%2Q7?wJ1|VC$3Ym$$9F6h!X- zC`6A^E}tJDAnWmFXEGiSD`zsQElVa?S>O$xUZItF?k!zP6(LEmh-ItJowB8JTi1C9 zq!o$0F=7%J>3B^Q-8b?XcXkqBW^+LW20e^J#y&#++6qwXx4jH+dqv-=9?-)26d#TM zYZW%LZ3pOE*m?6Ae_cW#_STGstB9*zn%InujW8Ho)>87g>D)Ybb~{2tgS|gzP69`Z z-ioEfZVR~u{)>=6YNCS5I%zDw?5pt|P8U*hv=7OgmW3*O#Ks8sutZ)zxrX$@LA@-xmLPaSL&ShrX zDaK@-nQE(g_`1>*UMYVLuyIk?|!X zc7`++nUXTzw+-gPYQT&g_3iWIRC<3o03N{fMh)(Q-JbpJwzo*(9WYjX;~0Ghh?pIJ zlU6DVe_bagfH_xQD&UpGAQ>U!d@mF4gfg$+4Ke33_6{g6hiq6XH*5mU`rwJMw4qf# zGIvWyM?3PTNJ|7XSIomp7RKlAL6I9^x3p!Q3xX_I7xU|aMpMEL!l2H)Vzjoz^8lSQ z{EOE$g%96d`*B#MY{9gV2uEzq9q`s!e%xfS*+&mXFx`x zi*lioYel)HuEO2AY)a$BPT~3tMON?;d-sMZTjb}(FBFZihrPcJHQvz18FDmvVs(PS zBg@;AB>gE<(;Etp+UykrX?b_X-E=Yxi7WtrRZcg}^i!U&R91WV8nm21jsyfXlLf!tz)JhoCjo?QQRim6(V!N=ii^j- zERdwvN0p%FS|9HfCKRfxL>9tJkP6?}9gzI~BKY?l$XPQJJf2^;y{^6k@Wo?tVa}pE z71isU{zoQ4mUd-$Xryw-_RzLi= z%$vHOFt_24r1{8Ul>P@AXb#7}{~2rlpA9DZM;`qP8h^m%A6WLkh9_Os!>`X^EZ@X* z2egk5{!9(Jiyv!;f0U4aM}S_dYcwb{j7pHIpl0Up0&o(5VRB}&-2VwHciFKl34M{WYfjGrLL0v&;WJ$nW`|gZ&`8*z2Dt7|Y7JY{U(G`8ylAe-;;{ z-CB4!mq3yk3dzeQ?;G0o$?Ma1w>MO~QGJV{@g z#8DUv3gvlYzx2P=J_BFpc!uoiJLEhc@-s=%S!Gtt2Yh6~hHoTEKT)k5<$XYu%l~D2 zeupmkXHv7YQ#|8f%MakC@2xSeB_IzOeqVC2i*<7;c&#M(2e9Qjb5R8%4UqqY!&Pn6vV=(fJ}x6Dn@3c<4tSX52%4)|Gs2>&)w0ovf&DDnAK z19Dx^23W9f_~)S!YSVw$aj6(EhXJOIr<<}KLwX@Q3nTFwWH%pg`)}y{?|@%#cvBBv zSl=XE%GY04!|v0Q+`@GIB&D20SKQw-oPTYoC}8|shjqwrBLlB~ z>q`6Ww+=B_pZ?O*HD#^o)Ou6sfz=%VQwpCUQrv&(Bl3G^(%%M?Lzr#)bvmI7zjl$k z_^qq>??e4Li9a#%Cr|t-9e?VHKQ-ommhEWz)#A~@S^RDz34b?JfdcNZWsDBY=w)I2 zZUvv*T-^axDQ>|=`t!@ZRoNj4To1*%d-35ujX$|0~Z|z z@y(sxcE6n7^iA$toQ6G83I$QpJG=UKun80JtyFo^=QAhhe=Kr~Rql0a#o!5g@z%YH zU3p_eAbnUA2ax|eNl_WL%-+Yp^1D#1#BI8EZ@*o za)Nu)N=_Afqyy&NSNL{5ups*-cD%nK$ecptS+_$FJ1ab6nZY_dC12P%7TSZK0^H@_uU^AA?A5c$(1GR0KFsC;3n{JX@#E zSjb~K%k<<^^UcL-(FC*I=hKX{NB}%BoGfXBG*?N%9bme7(3;~PW$rp7ZEA#?78wEG zK*zJX0-w}M?o{Q$i$u`r?1+K>Q*JR!|#V6j#KnU{~ns!1w&RMdCG-F3orHHu&@ z+#$TCDXyolzf-e>pn3Ih6d)K}L5UyU(;d0)N-LM{uGU1PFI2@PqwB?Z8|Hl(#%_I! zjg~udVa2hrk~~crqp~Yq7TFDaW&zn&K>bET#>&pMd!8}8SBhQft*O8Zk!F65aZVXx z4CNQsYnOCi+Sb@Kid;*gig*rB$t>5_9upvpuvR-DE<+2?HQRQi(`yx2*75bQX!VM( zm(hwZAmU!TFlCMqFG(j@T(;p$?SX&es=M(RRk<3D0Iv4)Pf!Bj!S`#rh;uXKeXp^z zkI_;_$FqHg#gQ%=A{77JU0w}k^2$PD4)}vNQGxB?SgVeTR5}jtkW38i{&*Dn- zq`xVwxWDMMKHKa z0($Pf@7HcAva~U>PH1JlZ!P-8BW_PiDve$-B}Ul5S4=gz^4>vX(=_#G_p7rilZW#> z>PoZN++Zu%F8hXt6P*v5OZ@WuvohE03-0@(#8n4DXM}!bN(j4OlcvBW^4(dt-)h57 z*9T|?h8-roUb6C~-2QdU_ zBZEl>cCusj8I2B}9C4(r^kkmDz4!cOeW{F%y)PRN5AS+j^*g=$&3a!NeV55sb|oo3 z5%bQqRMRP-v}|@-C}&mH&CGOKg;Exp;c$f3hS$>MrGfZy^79jO6uU;0dyK{x2pWN~%2@Z3lu#-b%%$z!aFje^wPmg!09og>_=L?*ha zq!ty`eXAU4A*gXg9eGPMEiNRhK##(q#cVQ9=g`ZGEr~u*1Q#**EwGbmevcaT zQP7^F#`|tZo;|{AUUsBl&ilOqlmHtP;kxsSFqBw1bU(0C3$LStHmgTxQ=TdKLi$Ma zy1=KC5*-s$oP?nvL3*@Uig1VN4Q&9&6V$3PN<=YnAPhN2GG|(Xsdc*f>y#g0(sC5I zSsnh7bgcFAI-IZJP$!Vd(LL_PT4-pS@~w0x@<&2=dvqC{*VytJzH)sVF%itXXdV7`Q4nr4#)UQ z3K5iPW(K15K8n_LzS({vhXveY9W+aj{ghJ^ZQc~+jjPPdC?jU)+6fNtDEJcjjGj(H zl^m6*k6wa=jVlGJvQw1lv+Bx)q??b6LJmrFBCSBLhdr45UodR&s95J`;Wx71$RI^H zu(K7Uhj&2URmT2FdK|vRAB?^66r{87#%s%Qd%O;|;S^VdDnyMNUc8+$l_4u=eEenF zm84{0_Op|h)jOU}8T!h>;9U#H-dUo>Qejhz=*m`J-npsS3e2XU!7TEp^b9B-I%%9f zjaM#5FVeBmt;k%VR()0j&-4?xLmC7TxJD)O$ip_cqh<;AW`y)c$^Cr%{B~brT+)HM zvQpt-c>lX89k#gR^#s=_K|v zbA6+l?n=CL56@tSHx(SL9>$BOI`M*68OS^32&d>6E`T!6is2;N$XX>~sROaW!D`9` z@hUWC=v5#ZGU0v+WD0M*-~hD1V%+%0bGXweonl}FFa7L(07sGQ?Ec(rCm&NCH&IO4 znBv&qHE(~<`L7hO@<3`mLu0J$yDoFc%HCj)nI_PnZf2jBVQ2z4RXS-1(Zk=;(F1CcP*CE%5v ze9JOqFuKy@DT!DZ6({n+iVR^_FC=fJ1_#tAYCCz$S5;9y&b(a7jbf;ajGIWv*G%x> z$RiHCP`a3?oPS;-&gIPg%3+h_bEZAmSJcqBW4NMtSw>t~)O#-7+wSj^2l;QZAm4um zzS@SJOF)hCMrC*+J6Y(+>rpRO5@TQ4iU9D0Wr+m7+8QY#L_+`(7RUJ1)?+zeiKe@`AEK%ORbol=)2R#E;)=ZNy*4H~lz5%D6lQcre?Nk_p_>P*3tY2PX%jM_(81o?%< z(KI>=Kl0|j);NwYG%*}*`xV@)$7y6UN!Jre}bhpT56oxz1M)176(s zYe9W_Lkpig#<6{)uy?8&&!fz#ns%(G-&Ra!m()teg=Ax2RiK@rU3ffiI>{!|GlxkT!4JtbBQ;+U_jTo8Fx}%IuTQ9 zW`K5=W37HP%Uxp0!A1F7*mSvozPBM1jN$tXnmArWCL5oZEY0bSdnPe(pPP5Ca5zEgP8|zyA&dXE09*pOG!qceom3#8=JW0Xb z@pjDQAzb?x9Y*xMl`wHw&`fHec4Yo)nJJS(qU%V%ZfyBIwX&+ubT>SCECDzXJyQF< z7;lcJ@UEW8KUkIpTh|CK=-ePHbYaEL3eyk+wvsG8=nz-P_eTmNrNmA?2vyamEUMxK z?dHUcA0rp`rZPblbb@pi&<__91Fr2(9P%&!uBQGwvigtO{YPXt=@%J(@S_X^6$pxHiqU7}qydHucJL;;T5F6()* zDip^m;no#)ddxHBAoULD?19uQ^qZ*z?;RG72L!Kn?f`$HY?v!x3yZ`WU(-r1xf%vh zi$(ES3pJM;8X7uvWzT78%uqD89e(xq4T${e+qMWwUiT)cv%Y|m-JC+chK@o8VQ<~- zf4;?K!U5rJHbE01XVZ58D)*~9fNur1EjxIwSc&sl9L_pc=|vY&QYo7ReDt1BD*Qi~ zfkDiw>Z-WOthv8M3=bGgf{A?HStKoV|8H<)9+ODS2ZMNes$8%AU&+hf7DB!>UEcd8 zFp&{&QnX}h6hjdzruNM@mvnUq;e!$_r`FRgdECaE!ja@4;+{STV73e3ye54iCNz+* zxhp42wU{gjn0^Q3<%8~Z4ZqXcg2x>sC;fCCDk+4BOBjjpp3o7qxm5E=XuETn9xYU= zqrc5rCHA0}5REZEGdzt0WEE`ow998GK!FXJ7b&_=mZQD#rMDGBvhAp#4Az`sb7R@MaPtk)}{sCt}&6@@udzdqH7($*p}GBV07f`>}Q zSriz+M!N{zA+p}nP&J>%UhnH^S0IL2ewATG<`Dwj=r9>u$!rZxEs+eW%k0cMz-;tQ zZQT1Dg~6*r2l5cZ6%yA0JNtQs5zHKTb7y;F19NBUy)DVm{nEjJjNV+!&9+ zxFt-J^!UwGiqZ27FS~pVLh>+KZBvdF+q^BVsuGBY1?smrEgA>Y43!W{JOUb`Fd|-Z zNAkoo4ml*1fb3XkYb?7gr6j`(?q|fY0@)SDcYyM*iW(*^cfeNXZ@v{mB=sX8gw)g| z)tDDe7VlG0w@Gb{#wRIVLn!>z>VyX@3PQ~?Z&h(Km9$dl+NWDZSj`riLn5>}30MDA z=6kHSJ!7dBe~8m$HQVe>rEiZR)k=^4^DlPd@`cLK#E)?)|0s5tRBNMeISx+HCYzHfG^Td zdC!`0=la#7hGc@s!Z9pPZ!pw~cUxoZ1E>?_g*=tsYIRk-T4ptpQ}y#&0w8xzvip%3 z2)rp8GqY4;m~2#I$tpShXigOm{dqDQG9m0`f8xYbML95U>Nor`sJ9l1J_}W#z}Tp- zoyfgDaFuOyS8-S{U2uyijsn3?4*K7TS^Ymy4|?~5qx**-rLu5;+Z6#;411#_zeWk= z9WWl;SY^Er)A1f;hxtx_2>3?aE3|X%>Dv-gV8JJ`-SedP7=c9(2w}bg>`0yzEzr+w zN}CGLVH8XYvX_4uvRSE0*TqZ8k7*`F3&;N%;w5;scn5?M8Qoq(&RSr{ZK8sKaEpb7 z@Y{326|w22CbF9YNJnP6H{~q%*)Q52>wNgHlgXn^MLzAnIft1CzgrH=ge%z6bOC&A zCS}IspaSm;A`1n$|K+j%3#a+#(0`!YeI0W^62QKNP^dwApH_T95R=EcDkv(a0@Z!cfC|r zxqc+L@p$%1q`2fJr@s3RFn=a+wp9N;v*8XX@`-WSCuP5BFnj3P9M3PhvrAqb!V$G- zY{eZ}qZ`YM*44sk`GwrnwOnv?}#o z-xu=@Wes_Xjscdf<|+~ya2mmu*?P>POGUvA^WL*IrZ><}xJYtWEN9k{hT6QaD@Ni+<>gb7 z0$Q0xq=Bb4Hnz&*zDqi|-^}%oMAb5EBIpfzBFB|7F_JT%y7q44Y2QPj;FLSBoqmX zMiwoF?YXyCH~N2A!;L64B&tDY5vB^0fD#rLYu)Qz;u`ug96AAcb6n+c;j}lK(n)x2 zj=8dQ(r^}!J2FqOK57ugE7jiqHMP0x+fn2I7S8~0_L*)Khvl_F&Nq>aeqwH6NBKwI zY`L?g*v=kvhVUUqpDk~xHme!nMYFc4<}&!}-pjq5l_6jzLI{%_05`I~I=~nY9f&iW zRCj;H(R=EGk)MaUC5DF7P04RN@Jy+ZyG3Uj`dn~^)c919z5OS4sN`c+L+`Mw~!3UsPtOjm_DfQ@y)(~S3)a8}aNcx|3i zTV&n!vzB_{HmlQIpIih8oCXei$HBs>d)V>GHBW77y4Bt8%qDZ=ptTm4uxhQgXEDr< z=kicXz&w7~;}Kp^fw(*3z^XKE#Zg1d%ZRn!H5(*JKG6B3bTDFWg}f;IubaGK3%C5R zH#BS@j}#Q0e&3oy1$r$Vl9bJnIqJ8g;nSr#wB9?o4X9AKu`!B5;ve zb=%OKk$x?7rTpHQ|1`;-`ld5pwDE&*d0-np(1glEoEU|P#Hx#p%k<7%>| zS|hH%;aR}fcGqqq334b8{6yJcD=uDa8N^hSDmME?P)?beO0UzmiaaY-YzbX)?U>s1 z^XE(tRKiZtlDc9UOxIlLKRxRG*t3WpRSq93c(g||^@k=~jU(JeMru*CY_GQJ`Cy7#s0gwODvZRBg=gIfY3O}gBk40*9& zlAwy23|1p0XoM=X8lLn-*o%;DR{MpciOQ~AE8$Tg9_MSK00jC{Fc0*L>!2BKaq(k^ zFDw&Q4p?YfW==s5`cYmL&{E4lm7oZux0TWwhnjVdYt0eLD5p6;OuoidFuXvrsnr#P zznJK#&k!!z`1tTm?^E%o-da!d5blW&d7CFiH%~hE+cFoF@b9*&bsHo2jvL%(2*IPr z>Vw>uzPttxMVz0GEcaX#?LM*G(=RpO@S3)+d?O@q0P-OxHZ*i6{l3fI?p*zawrrHN z%QJc9rF2J(A{=2^lz{!)-H-<JOmuk zF7~f2pPDESS()>TQR}dZsjG>IJza@GxWqi?h#>J$uS($lw7P{??rMj;VA$hS%Y$m; zLiHUN@w6#>bCT=y3|}6_I8g|{PfjT~_QHn}o&e^7zbn$)x+K|bJl?U08KGrzN-xh| z!I|wrj{waMC1RR3>5gZQYsh`i0rz4fTcDEyx zP*+vMR-YI74OPI5aC3(%WpL9{D7Sq17kSS2v+APet0glJ2}zJC(TH;T4B!PJi7WGO zxg5v-57mYqY(4U~-LAmDIS{YmcHdol$WHF%Xg6wq0H1L1 zrEZjch@AK4Mj_Rqmp@a53L4}pj~TJl;6d>;mZ*jI>#Zr=7w6kD(aIwhJ0lu#j`)#? zUpp!CW4`xzwDKbO`Gh3X3OPEcurG(>zFNB4tS$pk(vz4q*|EEcX= zGEbjor|7K9x-Z*s80Mo}wQHN#f!L<6+QYy@D?3juJX5=8LksT|-0`vfAs>s*z*$C5 z>GbJGMI)33xJGb)g!sz|ru{Z#CaaSKTciG)L_N@49b-Zlm_~2bSM2E?aTuGhaj9!k z5^fM=`5W5HrYnr~3}O{{t2O$z$9oBJ=**s7xz>E^!7@a4c0wsc^E=-bI>Rwzn>l(@>)b%l$T3hr>id^8|_N zquzNd>=%zQh^;9KjWa&eK2j-R@)3IYU5Thsxub<}&kB!I@ff8=kd7SPAdhMh)V&*@ z&nKOkAYRMOj7xo=!w3Z-ZSavtdHs<%xk2Qh6fg~YDC72w{^tAK#vOCBPS7m*-T>E1 z@y;R4hs~>d7s%1i26?>atfGj`Bcau1CP|c-ACckLtLvDGp-#`vXnsE?Q=Wj3S=E3{ zeIUB+siC^z(|0rK(rOF6K}$iaY+Mo-O2RaI$y3dPQt=W&K9UK&#J zac+GQ;mUi2SfvixQrHKm+5zI>eu4}fz+U_}iV_b8vkHMZ?8RvR*{W#Ri6za>AP+ro zfFnQs%=%OVe&JWi)|GCw>U9Rc$YcAiW`xnA1_R^A)$ZAIB@sj4#LeLYo08CAsk2R}d`fT9|n@Hubp%d4F)w8s07R~8lLhI6*e zKK$U=3vq}NP+sx2ktMblBEiM&G1cZ9DJjV+tBtf|o;ch!2>let``X*t62OC^%DC*S zv!0i{_^4>f$%()%)#vY2HPYKlYhlRw_LdCKcB6i<;_M~BP@1q{X(mAZ(%E<-I$7Hs_&5+ znGGAMeT1TAC$V9Q+_T}29nMjMZZj(HiXG922-OMqupN~dn_MUyJv_zS<-mHPy4)cZ zwEOzy@n=1?(YiC);N~$ZUo%|?Bxiq1@7dnSe?f|vIB!(O3m&Ru)&a->B70BCp zu7wgFDrtkTFB!dQ&!yDbXWgA@kq*lz4$ZuRkDp1^KNjbR%le&yAl%Mt_ukv3TcszQ zzZ9i^DKgW7XmhQKcVR~@u>n)2 z@o!gWG;%brdgv_G-&nsMdBV6f%8cFBW9TP0XAtcI*x*13XtslkoR^X`6b|Z5!p+k* z4+d?rA*BJRW$4&SQlN&&g%Gc#c4}rH`vJoPf$CFB){*tWU1b)|Z0uzdY>A+rs*Psd z`GPKiO3rHEO3(Y_6>8ttj|=^azJ6nfk&R30La_*syDl^zqRj>;ncbpHLbZ%$zHYzb zicc45%vKRs4uQ=A7g*uHVV%#JXdujA&@wlgF&Cs!&`>}RYl%!}h!A=m=`CZQxDs}< zFf7`u0ojt5Ig|WY$tds-e=gw%YsEx!9tUP#B;DwitN@ ztLQC8$RL6Gm6JQxo)j%s_^GHC?kDdS&9mq#DfEA^Nv*XLLaT|aSw&Y#9Tp-^nC;In zbF=(DF^PZwy<~daY}-hA-(IoIIKon(UZSpTqB07MI~*XN(Ja-8dJD)Hv(gLN8L+Pm zB4PxzhnlSr#ZX$78|j0!h3wFyH{H-bvYQ_1Xm$+Ewi5a$`jF!ADj}8<*{`BUhB)Qh ze)XC)Epl}Wog3D6{aASE5lNCwBYL#LP?NuE!%ZqlHR&uZv$Sec{ZMgI0DElJ9R+<7 zzsTPDf#|3E>Y}Spl&H{?;|6&OzR)q*BkrXzCwVPP2v^1TJwu^-6wu9e0Prl`Dq!(5 z6!bGaAy+q3^o3_mz`-vQrF1o;ewCVLfqvl9VIJitd;k2kXxQoCYtgEtZ?XMqhVQAH zsa2pIMCY!nq%m^}qi(*VBC#WW?)xUkWaA{vZd&NH?9t!zdQc+vq(-x{s%t zwD-^m6-2qJuzDo9oftw|De#5)$vRh1_I%b3w{2raNAbi_vE0Xq@Mv%3R>KguhDfa> z9MIPmz2f#2BBJdgff=#LoMS74S|>EJ9$Xs(kPr!y4D5SPM)mQusfhpFp5yV2`*KWG zbfK)CWe(?*Pl%nA(NV{NO*2Lgxx-+wyPdv$2=3}YA~WU}dKnx8r>5fU`P!vv&hY!D z+)>EtJ+LoO?@>e~)1#53FQykoX-kxiT7nB`%-zqc{(;g*fdUjow0T`_kD9;?WaM1zEI1WBNd4g zyl_76yzU)7XV5Z=?{E+0b?82Moy(qm%tPddNC+4%8lFOns6V!DZ(B-nMy(TaoHHkH zQA|F-pOd6Kb4AXfx^CqqspXWu#V5NFf*jf30i_u~l(SBPwOaoM#%=?3#$f8Xe(%d# zlXw#)zls+zRAqdI@N-VZ4lWGJ;4AK3Wu2)zU`EjTm}SA_YPQON$nCJ6x6^9;;~jt& zew!+I!FvZx$^Urq+9m$g{L+nIocjFWVfaN-$~y=1BnmCP9G5ulg>FZ(Sjn#}a-c2( zKBvKnveDM$$0M0dmBXAE0?&x1VNTe_tz$j!MU~G{b?yMegCFMpBODpqIQ8#N@$~Kh z*jahl%JP%B(t%*$lae+2+*!@`(?Fw8X#5L{$84yy)6ss%x+&Q%^<;jII7jxJCEX=e z**5*Rxlo^@n>{y&v%>ImO~?u84(J}d{rXe6a70VwZ@3z-I&dnpUVi%}czIxAOpD_v z!8n4jWf0?j51bnwc%jHSW^Lg|miZ%f%{2u}?a>ydZ&~jE_OaX&*!$4_u#GV}vg^b< zV2AeStIK}oUoZ$6Z0ZnPcZ0-jv8Ec2Q_15$6(~v=@ zRS?_Y5UCb3?ova8qi2@t!G#|=UJH>J5(t`X+nJ#nY&p$FZ#cCj=SYKrSE6)l>@13- z+!_00u;(9@|0O>T-TI!3??P);)$yFh+??xiQG@MluCcMM4T}Ux*^8?VSUVPWgH|<=MH0y=*x`sWkc@d z>@%B3n!uPZ!cEZB(&%AYgDJ%kNov|o2hjv7%(qC0c8FAX{NO8l$ty-@otao2uc9uSO{!Et=&~7EzRs9WQv)&5Utm>ux;Cz zuk7BM{5uLxo`|_KqlP+ZS9X&J7I+?$GQ0wJbaBwEepB3|aEL zlav-o56wHt?xVfT3`&(8(2Zjpb&eqHlDPfDL!9%q-C&&Lg(teI?^)+ed;AeVSwW~V zXDumU-ZH~^n;jBN7YgU6I{F;jp{+P9YIi2+VQ>B8Mm^eewxDE$?W=XAjefY*ys})& zgpq9+*b*sSpilfVQKaygyl=auhwMuu{mJCUT$dnHJ*sUvp5DDMslOl5_rfEiDcisK zhmmrKlOo=n@36bL9*;YgYfko%!cM4UkrhJUNYHHtRc%K3baBWh7n3uF?no2lhfI;0+ zI@czWqITA|sUB6#!x8Mtk{0Uai*+bc67AZp;(|4elS{ID`Ob*L5mxkjtw{|%$0;Cz;0Ro*X|#ATSSsW;xvwUOU_ZD`;*uenqWCJQm}%%-Qgw(nx(^O>77r zBZOa>P!=d8Q*u)5UU_1IJEm?Gzw8j=*$KUQmX55^8e|W}6!dc{`Yj3d>2$dG>6^W)3gA&$<&h3EJ z+eQQw%udkWv?8zT>VSf2;w8Qt?f9I~M3qT@L2@nQWuv4jAZmFavzypw@N_ zksp}hJ+qu%8CaBDdDW~_E>3hNSlBR+8ogrsidO3+%NwNYt0PW5BG#ia@-$ULQ{#E2 zE_R>%_%ToC^K~sLAh5IO9{T)`g77ERl&ZK~N_l+Hn|Gz=l01o{QPX*CL9N}AjQCax+hws7+trX;FG=RaJxa(*+(}`8x1;=5;78tIvyoR1g=vwbn^jqv zEMEJ8A0Hh39&f8v_)1mGZrCiRK?DZmP14>&&u`v8Sxyw9UPcb@Y^Z;a-VQ9EChmbM z*aAuIYd5P>nm1+{fq6HBd{IarXa~wID6rnXI&nw{CVGdLu#+}G_+AiuZh8T#wM2cU zkd3Taymz}ZD7nFsb4gvf=XO5zvWPm>L-?_rxthuOD8jfxLs@L$u!UIqgd9e~Wb7f+ zaIcb23cS@wuvgdGLUJNKvoUIBN@?HxBbV>Uuubh!CiE2T&5g4$F%$&L)}n?SJ?(V8 z?_H2k)+SS@@r~AsQ5`sB(xR+7vAn00XtMDvGr;?)<$LG5r_-RIIh2gOFO%yW`5t3g zs(4xN>hV`Ula`;ZpvC7YY`Oa>XB(6w&pH|W(8Ge{kGZO}iU{-aH*F~9le$>L9_+#7 zU4rSIPa5i97b2Ckblw8BYyEUo3o6CdU(A~DQAU#ts_(qeK8w1-nu4Va%HoX9+@x8j zMn>Sn7i&i~h@=U$O9?(?GUVJ7qsInPFCHe<6~n=E!7RrxHb{laquPYvDa zFg-WfG0m#7&KbDGP0A=cAXyP4px(R>T*uTOB-~>AB?@o4Wba5Du7#F7y*?uB4T-KV z(6e%MF9ZnIcjbMo|fqu@T;^KreQN>6H2i(hjcA0LloqL24LLAR_JEM0AIOSIh{xaP&C zbMHRX(#K*o8L9Elj>1M$WgR*zDuB;oFjBnX42wthVC;~l=lM)0NanT9se@9{rg{>7 zN!ePHGx6D*rtf#C*ZEa2rlx!Op}`Ia9?oV^;x_LMyCD8gFo_zox zRdXSWe%yI0Gq=4Pyr>CHt`#308t13*;aj+F_l)1G9!SH<&l}BT&=;8M5t!Nu8yb6% z*|IcuJJqu`c3Regs}nYS!LRAvJbVxLE%QL~z88seYSva*SIv#(`7>T-xb`w*aL0}(zd7FP=%8Im9r2*uzOvzK#{i05D_^_JI=AxU3N(Mx?-c$TV zGc1=|3&!I%P&V(QUY(pvM=sO>iK6BbQLx%0Nc-VHd8sE9uaF}RgjR0|ovGV0b6kfUZn|T&&F-%VzrS(L+%OmbbvCnNYXB$a z!y@Sdvzd zeR!g`BrG)9@P1XBF6!2-N22FUq(6g=15|D@noa=h^Wm#swM&VsgxD|(AW?mfuzC~z z1@CP3ThAU|fdY13odApdx6YTFkU0fdoqhn0LQ;Q$TmZ1lUtTu>cnALI=U;U~PSiAW zV*cJeTUmf@)l9a|Lde=_L4yX0Ja41wNCyG*3giK-W>x`X(y0%>?=7XFF|&dNz^l5j z0~izIg%6{~*>r%KhCN*F%aqA`Way^hk(H1lkZfwQ?El+F$9LHd)SPXL|sw|q!oTAqWi2aL4K_+`726- z|JQT=p`iB9atr^4-~Y?}2)A519>-l{cI5m~UHxzB^NIlRPlijV_~a-eAMvDa7cFnh 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..80b427c31 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,49 @@ # ############################################################################## -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 - 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) + 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)) + 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..d0bd7859b 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 ''} + [DB ${ctx.get('dbname')}] 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 ''} in the database ${ctx.get('dbname')} 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.

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

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.
+Database : ${ctx.get('dbname')} +

+ + ]]> + + +
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 zcmV;Z6IbksP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*xB z6(=*Y@A`@W000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000vMNkl#5cOe8=;CX#^25E5~SfW@cOsc0P@tE;W8b)Z`H_4ReN z#p-*O$CFYJ94Q(>W<*8QMnMq>QwRb9j6(*JkU94zcfR-cJMWK>5JD0nQ{P&Tz1CUx zx6bd}efIbJ+h?D%_kk;NMXtydxg!66MH!@{N{hlJ>RziSBu)Ka_S;I}U4&mP&g z@8J1Nykz3Ut5VIDWfQI8S4HY{a_@K59*@7QvvYg3*L(ltd-gP4b^?~={1^F4c(UMd1KeLIRK7d(6a zu!MP`TJ3<|p$Ngo#>Vw`Zr?uhd?#LAUHw*0R8&re**sd7`k%_I(MY+Wp|^~Rh!C4j zocR2bd%%l%dDCVmBov2gwFCaaud1v&d2+!6yLLU<-6w>Qzx(dHt7~d&?$v4ZR~d|k z1dUc}0#JfMx5w+P4+i}Qh9?bQlbV{kzqh^>1qCn6ijV(|ULM%lI)g#ps&6WMWY5me zE-3*e)2G)>wptSgGh|&u!xKL%DOm_mUS2-BwY`1*@Damrv_?c2hccnPz1>?~UG+&s znDy!0+}z^;%kuLdpA{GP*TIM{vD<44ii?vj839Z4@+Lo&oLn-H-#7dH>c+addmh@q zfBlzVemTPB^{mUx%9^0jXu7?Cn(Au4si>f~rUsYGjU<8DVkRjmnUwT2l9PucopN_Y zQ8<3=*#2-!=v~>_*)=aunDC=J6BF0O==J@&f&iADIFa}0?%jJYCILN^#~2Jx4g|i+ zzC8AFURKuvWut5>Yx{q-AZZEYQNvKX6<+h*O#tb6Yx zDLI+!oSX?BkEgP@xcIs0)2IJQk)&(?B{pu`h!CT`zb_S|)ja{+dr3UtA2$@1O^=Db zs_%fKPN(yelPAZ`DJ!cg*|U3Rc5dz@fR?5v7QOIS-dVdAMN!Zj^q4~}7>#;#20are zO=kS0JQn`2*f=nOj2bJ9slNycb8JN^mLkGn|{)+j6K+36&w zBohn-c;Z(Nvv|Q@QB{?U%*;_cOLpyfsdUjIZykd~cJ zh&hCp7XFRrpLqs=+_7V?`skyN-ke)r?%%%k)2z)+%{zK*^!txrG6I@C!T_E7qPJMH@@=W_JO z5p+5oBS(x_)jj6!onPFu{KSbn9xE-mbRGck(7t^eyPwyuS^xNm)RahodCxveM06yP zF;Uosz$i)Fr4PAyTahd?Jassd1b=zv&t2rFjf&p5e&fU4V;KJ?}ma_^48YJZLbTolKl>Qliz8ketZ=J$u={wJY0BNKX9IrA~+Y zC1CB^wO3_iX4wEExqm^F;huuxuk@kIbKva)Pz z*RIXE>;x!^@}wk5R99AU{OD1_Bg6as^S7$P+kOv^7)(U(OaK7`@&=>?&xO4s2fL&#A;E1dF{cX6Ouz)#%RL>a;pkMHzZPlqAfd zX1+X7)@4gvY{F$HAT~Zu4^UlIg~4PPlA<8+s?SZPR?E~r+hlZf^!GB#Xf#k=RS7^` ze7yd$60l^+k~r}~d* z=S6>C6n)tU@U*x0SnBop20YFVCdXoJsAF;guv)Fmd+s@EDys)Q5S@80kns9W2T^~0 zhv`xga8?PXwxy+``#Ch!f~u;>vOFYZQ86*hy8Fjmcf*bB*xpsW`tG;?&aQp?vBX9V z*(g;}u~zf*d*=**)f1OQBTjQWfPZv>P+YZlAr&*MQ$80)kWEn;XMP=BJHtgLKadGifiE*A;5Sn0BP06=YZwL4?n$(nZ8#+>lF;Imfyg2q6XxhQ@{_lvkJGOc_CJVge@1;PFcJ`x$fa2;U?R!y9Ki>wSmaj=>m0 z{*-IFV#qh&z1Mfl^4FG588?37s?5>3!@3Kyy-M^T8fb1bO*{Ve*XuJ!mDeCiR)nNS z5`KiRBeW;b`=W)@d$eBy4wrxZg45}oW3gD6KH~@MF4;*;yscmGzbik^#6W--RF&eZ z$D9-V^aF=@((Yhir<3R5OcI2kv96I@Z@Ud+h>6aQ4ytOZ{?=Q^n{O_gQCK*2Ra8`r zwX?Ic=gW8hA{^*6hlz@4w?tdBALwwlR)mFic#$MM2tSh21OXe8WJ1t?GFMi%&rvXW z^6b>KQ4twgS-kPeYlKIHBWvV-!2=X{eKfW^_|_JUq|pot9w1RwNoj3ow<(0+sncdl zV=Hc_i@&}4GNGZNY~Q-A;;E;e`mb&sZx=1UwQ%b6RbgS)aF54x7I;-v(MVsTmA^$2 z73g&}vcVw7s3OrUYZ47eVU{lNiUA>1gybDCn@viHtuMIty1OGHBWZ7MWACorghyJD zBh-7*jfeZhB2ZxWoch7*-FJn++>Fyoe6@caC{y<)}BckkYP9ANdzqB{$x-&ABW zS;D+tFRH4Z)r9IoBY%TVQ-xkzgH~fl)@CAUat$ge8d(z!=mo+a1_2+a&Ox`A)vMQh zd-Kd&QXCEk_sskuF1L$RgRWojz2yaKIK@|wLDuUB1b;^LS*PU@vjuHxD(kmw#$pL& z%e(Ja+8308^f4_0sv>ET1Or|i8$J6t*`+9&x14dmLM*U%oy06gctVo)%$l5U= z*$`^IU#85Bvd4>BQ4gLSgPw5S->`mWeQm889v;q%%U;LQ(#CHO9~~4tz>{_d(+?aX z;Buc6Jix?2ki{JxJoUi+SS+E`)|^m3{AklmfTGuyWKOx}`c-DLIn3>LqbSONO$Z-C z_z`LVNeY5w1VTZIMbcgaQoLS>a4nc*kn{*iKWIVc@X@2qp(YcP3-SwNY&QIB*6^c- zh9PZd1zsPKCmZ;Q+cTu`!-Qau*UQK|@8spBOaEi((pTPHzI=Jygh_c{#KkAXJDtw6 zUB1uy7s8E3ZbYkTMyqK@qtPMBksz57Y8w*GD8Un2M5R}vr41=idCrQ~j-5L{j|dB! zFn-dc^wc|U=i_bL$Zl*L5~%bcp8Wwf=jSu&ts+(wy|wX~XP%j}V8H_8_^Ze49F>-t z+R@R`@0vfWDWK7`pphJCG%mE776dXv^@7@rP-~E=l>+{1y+p?`SqgqVq>|pJTeq$X z3o%bFxZ%1{v3K0TwjDdjtgpXl$I;FC`DCwL!RohHZT{Wwe}6l`BM(2ga#G$kH#i&) z6h%4ftM}hDD2g4os~Ji1Vl*h|buDN#ZdA1qq1K`*)gVR4RW(MUtW6)tLp8GSn*5)& zx3#I^(b0_Gu%6BN`4scU4tU6oo(_ zfWzUSuC5M6QLx44k(K=e5{6AdZ_GvzkE(Pa(}>s8g2x+y%bkEmKPjQM!PKT5(s^14 zed&R+(iodf?r=CbTwd-TyLy#r^N;W4){>G70`Hmgm`Bp-LSn+hwf0tfsSslLtFO+} zN|J=EkqHC>NRo7h2Y5Ul+S}VP8jU0-CX$hnfx%$tA;lk*kwgGgEfV2KQU|i6;_|km zD4`gP!}0oc>Y?NDRYO_=g*O)N$R3lMsVEAIUs$+k@vk15+A0$@;{FH5Ra95Y>9w`r z8~o~=98sK``+CtI{&-!d-WZX8O~IsSTa0DT?%h*cT54C09Fg&a%@${DceE1>1hL!g zw6?ZlHk(OKP9`fWi=?C^LPJ9lLg4fH2m}IM9-^91g%yDwRfM97NE9_1gK-qit!Ba_ zuI6N;)wgy- zM@NU~=;#m*heO!yc44>MMSFX@XlrZhYOS@Rz5SSIYb_H;j(j2-8!AO}bF(NZ+12@r zU(8M(GzQF_JJ%Q;6Z3O`kGE`TczMp_g=f?bYiljHep*~G)#H)B&)1)-D5j?gzC0d! zN?k9{dA#uBEn6A@Vr;RqdnY+*DQT1+FURS0;&Qq0dcCK=wxSFeClo~?sOa(gBdM%X z2?-gAB%2XJ^b~mpT>_td_F1s0v2l~n?Y?QX2wJG9C&9oOgW$RKNgaW zP;dg?KMC$;P&}=kRRP6w+onw$emG^ywGV`bh8eq!)yNtSA3aQ*Ew0}kVW88Ys;bo2 z*Q3#Bh>AL0m9pFI{<5-tOV6v)a-raROA+i?1b37|OLyNZulyzKhU;fmCnP3Ym0l(F z>e_0Wnw!WRmD!W}_D<8g>H(+wgb=j1x6|3#Nm^Rk8S~cER6AdPeMz?Vp9vn|l%99` zl5j?Tf9f|WA&J(uRw}-&Al?>#7TCVeE|&|t-A-<9?iqR{NkW!ob-;?yCj@L|J|WC_3DkJszP8a@i zgF)ObHvxYDS&}h_n2EARF)n8u)-WsOUzek(%2|3q`u+sG4jUK1FV96ncVIgN6^r1G zbCGZiS{A@BUx$so!S{{mZT2?oopuVR6!ru-pU-zj^zYpgViQP;Pom1+T6;0--OxoJoaJ$|8g6>P2#bhBRDTR|wCkX@t z7f!%nB=onX4MxI%-~m;10Ze4l77I;K=jtFJCh%L@Yk|I-<9Dxolay~ zMyJ#DyOj+EeD9m*Q(hrgR#p$wUg#cv3dF{tjxU9l?yasL(F1zB-K9NvV1KZ_uC7HD zDneCHWm3JqIH&s*MFqN-1PE0ix`N2*K5@EF6@u!jO0C0TS1;M6;{}M3uCs&X)U$lP 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() From b68ffec885160733011666167806f96294af734e Mon Sep 17 00:00:00 2001 From: Sandy Carter Date: Fri, 14 Mar 2014 13:45:14 -0400 Subject: [PATCH 04/34] Generate .pot files --- .../i18n/scheduler_error_mailer.pot | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 scheduler_error_mailer/i18n/scheduler_error_mailer.pot diff --git a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot new file mode 100644 index 000000000..c83ab22af --- /dev/null +++ b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot @@ -0,0 +1,16 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 7.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-03-14 17:41+0000\n" +"PO-Revision-Date: 2014-03-14 17:41+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" + From 288ad90cf329c04bb18adddea6a1fd3c68f1d9da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Sat, 12 Jul 2014 12:02:52 +0200 Subject: [PATCH 05/34] move all modules to __unported__ on master branch and set installable=False --- scheduler_error_mailer/__init__.py | 24 ------ scheduler_error_mailer/__openerp__.py | 48 ------------ .../i18n/scheduler_error_mailer.pot | 16 ---- .../images/scheduler_error_mailer.jpg | Bin 29784 -> 0 bytes scheduler_error_mailer/ir_cron.py | 70 ------------------ scheduler_error_mailer/ir_cron.xml | 24 ------ scheduler_error_mailer/ir_cron_demo.xml | 27 ------- scheduler_error_mailer/ir_cron_email_tpl.xml | 50 ------------- .../static/src/img/icon.png | Bin 5032 -> 0 bytes 9 files changed, 259 deletions(-) delete mode 100644 scheduler_error_mailer/__init__.py delete mode 100644 scheduler_error_mailer/__openerp__.py delete mode 100644 scheduler_error_mailer/i18n/scheduler_error_mailer.pot delete mode 100644 scheduler_error_mailer/images/scheduler_error_mailer.jpg delete mode 100644 scheduler_error_mailer/ir_cron.py delete mode 100644 scheduler_error_mailer/ir_cron.xml delete mode 100644 scheduler_error_mailer/ir_cron_demo.xml delete mode 100644 scheduler_error_mailer/ir_cron_email_tpl.xml delete mode 100644 scheduler_error_mailer/static/src/img/icon.png diff --git a/scheduler_error_mailer/__init__.py b/scheduler_error_mailer/__init__.py deleted file mode 100644 index 36504c54b..000000000 --- a/scheduler_error_mailer/__init__.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- 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 . -# -############################################################################## - -from . import ir_cron diff --git a/scheduler_error_mailer/__openerp__.py b/scheduler_error_mailer/__openerp__.py deleted file mode 100644 index b1cb4dfe6..000000000 --- a/scheduler_error_mailer/__openerp__.py +++ /dev/null @@ -1,48 +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 . -# -############################################################################## - - -{ - '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, -} diff --git a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot deleted file mode 100644 index c83ab22af..000000000 --- a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot +++ /dev/null @@ -1,16 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 7.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-03-14 17:41+0000\n" -"PO-Revision-Date: 2014-03-14 17:41+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" - diff --git a/scheduler_error_mailer/images/scheduler_error_mailer.jpg b/scheduler_error_mailer/images/scheduler_error_mailer.jpg deleted file mode 100644 index a8a3af766a54c209723d9be24d05c1302ad01bbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29784 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 N(RfMZ6wk-L{{YH#n!f-5 diff --git a/scheduler_error_mailer/ir_cron.py b/scheduler_error_mailer/ir_cron.py deleted file mode 100644 index 80b427c31..000000000 --- a/scheduler_error_mailer/ir_cron.py +++ /dev/null @@ -1,70 +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.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)) - diff --git a/scheduler_error_mailer/ir_cron.xml b/scheduler_error_mailer/ir_cron.xml deleted file mode 100644 index ee1bcfd6d..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 d8453b4bf..000000000 --- a/scheduler_error_mailer/ir_cron_demo.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - 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 deleted file mode 100644 index d0bd7859b..000000000 --- a/scheduler_error_mailer/ir_cron_email_tpl.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - Scheduler Error - ${object.user_id.user_email or ''} - ${object.user_id.user_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 :

- - -${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'} - - -

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.
-Database : ${ctx.get('dbname')} -

- - ]]>
-
- -
-
diff --git a/scheduler_error_mailer/static/src/img/icon.png b/scheduler_error_mailer/static/src/img/icon.png deleted file mode 100644 index 6b22abf97322d7e40e7a605b813376aad99937f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5032 zcmV;Z6IbksP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*xB z6(=*Y@A`@W000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000vMNkl#5cOe8=;CX#^25E5~SfW@cOsc0P@tE;W8b)Z`H_4ReN z#p-*O$CFYJ94Q(>W<*8QMnMq>QwRb9j6(*JkU94zcfR-cJMWK>5JD0nQ{P&Tz1CUx zx6bd}efIbJ+h?D%_kk;NMXtydxg!66MH!@{N{hlJ>RziSBu)Ka_S;I}U4&mP&g z@8J1Nykz3Ut5VIDWfQI8S4HY{a_@K59*@7QvvYg3*L(ltd-gP4b^?~={1^F4c(UMd1KeLIRK7d(6a zu!MP`TJ3<|p$Ngo#>Vw`Zr?uhd?#LAUHw*0R8&re**sd7`k%_I(MY+Wp|^~Rh!C4j zocR2bd%%l%dDCVmBov2gwFCaaud1v&d2+!6yLLU<-6w>Qzx(dHt7~d&?$v4ZR~d|k z1dUc}0#JfMx5w+P4+i}Qh9?bQlbV{kzqh^>1qCn6ijV(|ULM%lI)g#ps&6WMWY5me zE-3*e)2G)>wptSgGh|&u!xKL%DOm_mUS2-BwY`1*@Damrv_?c2hccnPz1>?~UG+&s znDy!0+}z^;%kuLdpA{GP*TIM{vD<44ii?vj839Z4@+Lo&oLn-H-#7dH>c+addmh@q zfBlzVemTPB^{mUx%9^0jXu7?Cn(Au4si>f~rUsYGjU<8DVkRjmnUwT2l9PucopN_Y zQ8<3=*#2-!=v~>_*)=aunDC=J6BF0O==J@&f&iADIFa}0?%jJYCILN^#~2Jx4g|i+ zzC8AFURKuvWut5>Yx{q-AZZEYQNvKX6<+h*O#tb6Yx zDLI+!oSX?BkEgP@xcIs0)2IJQk)&(?B{pu`h!CT`zb_S|)ja{+dr3UtA2$@1O^=Db zs_%fKPN(yelPAZ`DJ!cg*|U3Rc5dz@fR?5v7QOIS-dVdAMN!Zj^q4~}7>#;#20are zO=kS0JQn`2*f=nOj2bJ9slNycb8JN^mLkGn|{)+j6K+36&w zBohn-c;Z(Nvv|Q@QB{?U%*;_cOLpyfsdUjIZykd~cJ zh&hCp7XFRrpLqs=+_7V?`skyN-ke)r?%%%k)2z)+%{zK*^!txrG6I@C!T_E7qPJMH@@=W_JO z5p+5oBS(x_)jj6!onPFu{KSbn9xE-mbRGck(7t^eyPwyuS^xNm)RahodCxveM06yP zF;Uosz$i)Fr4PAyTahd?Jassd1b=zv&t2rFjf&p5e&fU4V;KJ?}ma_^48YJZLbTolKl>Qliz8ketZ=J$u={wJY0BNKX9IrA~+Y zC1CB^wO3_iX4wEExqm^F;huuxuk@kIbKva)Pz z*RIXE>;x!^@}wk5R99AU{OD1_Bg6as^S7$P+kOv^7)(U(OaK7`@&=>?&xO4s2fL&#A;E1dF{cX6Ouz)#%RL>a;pkMHzZPlqAfd zX1+X7)@4gvY{F$HAT~Zu4^UlIg~4PPlA<8+s?SZPR?E~r+hlZf^!GB#Xf#k=RS7^` ze7yd$60l^+k~r}~d* z=S6>C6n)tU@U*x0SnBop20YFVCdXoJsAF;guv)Fmd+s@EDys)Q5S@80kns9W2T^~0 zhv`xga8?PXwxy+``#Ch!f~u;>vOFYZQ86*hy8Fjmcf*bB*xpsW`tG;?&aQp?vBX9V z*(g;}u~zf*d*=**)f1OQBTjQWfPZv>P+YZlAr&*MQ$80)kWEn;XMP=BJHtgLKadGifiE*A;5Sn0BP06=YZwL4?n$(nZ8#+>lF;Imfyg2q6XxhQ@{_lvkJGOc_CJVge@1;PFcJ`x$fa2;U?R!y9Ki>wSmaj=>m0 z{*-IFV#qh&z1Mfl^4FG588?37s?5>3!@3Kyy-M^T8fb1bO*{Ve*XuJ!mDeCiR)nNS z5`KiRBeW;b`=W)@d$eBy4wrxZg45}oW3gD6KH~@MF4;*;yscmGzbik^#6W--RF&eZ z$D9-V^aF=@((Yhir<3R5OcI2kv96I@Z@Ud+h>6aQ4ytOZ{?=Q^n{O_gQCK*2Ra8`r zwX?Ic=gW8hA{^*6hlz@4w?tdBALwwlR)mFic#$MM2tSh21OXe8WJ1t?GFMi%&rvXW z^6b>KQ4twgS-kPeYlKIHBWvV-!2=X{eKfW^_|_JUq|pot9w1RwNoj3ow<(0+sncdl zV=Hc_i@&}4GNGZNY~Q-A;;E;e`mb&sZx=1UwQ%b6RbgS)aF54x7I;-v(MVsTmA^$2 z73g&}vcVw7s3OrUYZ47eVU{lNiUA>1gybDCn@viHtuMIty1OGHBWZ7MWACorghyJD zBh-7*jfeZhB2ZxWoch7*-FJn++>Fyoe6@caC{y<)}BckkYP9ANdzqB{$x-&ABW zS;D+tFRH4Z)r9IoBY%TVQ-xkzgH~fl)@CAUat$ge8d(z!=mo+a1_2+a&Ox`A)vMQh zd-Kd&QXCEk_sskuF1L$RgRWojz2yaKIK@|wLDuUB1b;^LS*PU@vjuHxD(kmw#$pL& z%e(Ja+8308^f4_0sv>ET1Or|i8$J6t*`+9&x14dmLM*U%oy06gctVo)%$l5U= z*$`^IU#85Bvd4>BQ4gLSgPw5S->`mWeQm889v;q%%U;LQ(#CHO9~~4tz>{_d(+?aX z;Buc6Jix?2ki{JxJoUi+SS+E`)|^m3{AklmfTGuyWKOx}`c-DLIn3>LqbSONO$Z-C z_z`LVNeY5w1VTZIMbcgaQoLS>a4nc*kn{*iKWIVc@X@2qp(YcP3-SwNY&QIB*6^c- zh9PZd1zsPKCmZ;Q+cTu`!-Qau*UQK|@8spBOaEi((pTPHzI=Jygh_c{#KkAXJDtw6 zUB1uy7s8E3ZbYkTMyqK@qtPMBksz57Y8w*GD8Un2M5R}vr41=idCrQ~j-5L{j|dB! zFn-dc^wc|U=i_bL$Zl*L5~%bcp8Wwf=jSu&ts+(wy|wX~XP%j}V8H_8_^Ze49F>-t z+R@R`@0vfWDWK7`pphJCG%mE776dXv^@7@rP-~E=l>+{1y+p?`SqgqVq>|pJTeq$X z3o%bFxZ%1{v3K0TwjDdjtgpXl$I;FC`DCwL!RohHZT{Wwe}6l`BM(2ga#G$kH#i&) z6h%4ftM}hDD2g4os~Ji1Vl*h|buDN#ZdA1qq1K`*)gVR4RW(MUtW6)tLp8GSn*5)& zx3#I^(b0_Gu%6BN`4scU4tU6oo(_ zfWzUSuC5M6QLx44k(K=e5{6AdZ_GvzkE(Pa(}>s8g2x+y%bkEmKPjQM!PKT5(s^14 zed&R+(iodf?r=CbTwd-TyLy#r^N;W4){>G70`Hmgm`Bp-LSn+hwf0tfsSslLtFO+} zN|J=EkqHC>NRo7h2Y5Ul+S}VP8jU0-CX$hnfx%$tA;lk*kwgGgEfV2KQU|i6;_|km zD4`gP!}0oc>Y?NDRYO_=g*O)N$R3lMsVEAIUs$+k@vk15+A0$@;{FH5Ra95Y>9w`r z8~o~=98sK``+CtI{&-!d-WZX8O~IsSTa0DT?%h*cT54C09Fg&a%@${DceE1>1hL!g zw6?ZlHk(OKP9`fWi=?C^LPJ9lLg4fH2m}IM9-^91g%yDwRfM97NE9_1gK-qit!Ba_ zuI6N;)wgy- zM@NU~=;#m*heO!yc44>MMSFX@XlrZhYOS@Rz5SSIYb_H;j(j2-8!AO}bF(NZ+12@r zU(8M(GzQF_JJ%Q;6Z3O`kGE`TczMp_g=f?bYiljHep*~G)#H)B&)1)-D5j?gzC0d! zN?k9{dA#uBEn6A@Vr;RqdnY+*DQT1+FURS0;&Qq0dcCK=wxSFeClo~?sOa(gBdM%X z2?-gAB%2XJ^b~mpT>_td_F1s0v2l~n?Y?QX2wJG9C&9oOgW$RKNgaW zP;dg?KMC$;P&}=kRRP6w+onw$emG^ywGV`bh8eq!)yNtSA3aQ*Ew0}kVW88Ys;bo2 z*Q3#Bh>AL0m9pFI{<5-tOV6v)a-raROA+i?1b37|OLyNZulyzKhU;fmCnP3Ym0l(F z>e_0Wnw!WRmD!W}_D<8g>H(+wgb=j1x6|3#Nm^Rk8S~cER6AdPeMz?Vp9vn|l%99` zl5j?Tf9f|WA&J(uRw}-&Al?>#7TCVeE|&|t-A-<9?iqR{NkW!ob-;?yCj@L|J|WC_3DkJszP8a@i zgF)ObHvxYDS&}h_n2EARF)n8u)-WsOUzek(%2|3q`u+sG4jUK1FV96ncVIgN6^r1G zbCGZiS{A@BUx$so!S{{mZT2?oopuVR6!ru-pU-zj^zYpgViQP;Pom1+T6;0--OxoJoaJ$|8g6>P2#bhBRDTR|wCkX@t z7f!%nB=onX4MxI%-~m;10Ze4l77I;K=jtFJCh%L@Yk|I-<9Dxolay~ zMyJ#DyOj+EeD9m*Q(hrgR#p$wUg#cv3dF{tjxU9l?yasL(F1zB-K9NvV1KZ_uC7HD zDneCHWm3JqIH&s*MFqN-1PE0ix`N2*K5@EF6@u!jO0C0TS1;M6;{}M3uCs&X)U$lP yv1*|EnN!URIR7saFr*9I3zQ&NEv<0000 Date: Tue, 16 Sep 2014 13:03:36 +0200 Subject: [PATCH 06/34] [MIG] scheduler_error_mailer: Migration to v8 --- scheduler_error_mailer/__init__.py | 24 ++++++ scheduler_error_mailer/__openerp__.py | 48 +++++++++++ .../i18n/scheduler_error_mailer.pot | 76 ++++++++++++++++++ .../images/scheduler_error_mailer.jpg | Bin 0 -> 29784 bytes scheduler_error_mailer/ir_cron.py | 75 +++++++++++++++++ scheduler_error_mailer/ir_cron.xml | 24 ++++++ scheduler_error_mailer/ir_cron_demo.xml | 26 ++++++ scheduler_error_mailer/ir_cron_email_tpl.xml | 50 ++++++++++++ .../static/description/icon.png | Bin 0 -> 5032 bytes 9 files changed, 323 insertions(+) create mode 100644 scheduler_error_mailer/__init__.py create mode 100644 scheduler_error_mailer/__openerp__.py create mode 100644 scheduler_error_mailer/i18n/scheduler_error_mailer.pot create mode 100644 scheduler_error_mailer/images/scheduler_error_mailer.jpg create mode 100644 scheduler_error_mailer/ir_cron.py create mode 100644 scheduler_error_mailer/ir_cron.xml create mode 100644 scheduler_error_mailer/ir_cron_demo.xml create mode 100644 scheduler_error_mailer/ir_cron_email_tpl.xml create mode 100644 scheduler_error_mailer/static/description/icon.png diff --git a/scheduler_error_mailer/__init__.py b/scheduler_error_mailer/__init__.py new file mode 100644 index 000000000..36504c54b --- /dev/null +++ b/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 +# @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 . import ir_cron diff --git a/scheduler_error_mailer/__openerp__.py b/scheduler_error_mailer/__openerp__.py new file mode 100644 index 000000000..d8dd3eb36 --- /dev/null +++ b/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 +# @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 . +# +############################################################################## + + +{ + '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, +} diff --git a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot new file mode 100644 index 000000000..95fe5ca84 --- /dev/null +++ b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot @@ -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" +"
\n" +"\n" +"

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

\n" +"\n" +"\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"\n" +"\n" +"

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

\n" +"\n" +"

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

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

\n" +"--
\n" +"Automatic e-mail sent by OpenERP. Do not reply.
\n" +"Database : ${ctx.get('dbname')}\n" +"

\n" +"
\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 "" 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 new file mode 100644 index 000000000..17b0f2c30 --- /dev/null +++ b/scheduler_error_mailer/ir_cron.py @@ -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 +# @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': 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) diff --git a/scheduler_error_mailer/ir_cron.xml b/scheduler_error_mailer/ir_cron.xml new file mode 100644 index 000000000..ee1bcfd6d --- /dev/null +++ b/scheduler_error_mailer/ir_cron.xml @@ -0,0 +1,24 @@ + + + + + + + + + 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..4c6fc5e7b --- /dev/null +++ b/scheduler_error_mailer/ir_cron_demo.xml @@ -0,0 +1,26 @@ + + + + + + + + + Test Scheduler Error Mailer + + + 1 + hours + -1 + + + ir.cron + _test_scheduler_failure + + + + diff --git a/scheduler_error_mailer/ir_cron_email_tpl.xml b/scheduler_error_mailer/ir_cron_email_tpl.xml new file mode 100644 index 000000000..d0bd7859b --- /dev/null +++ b/scheduler_error_mailer/ir_cron_email_tpl.xml @@ -0,0 +1,50 @@ + + + + + + + + + Scheduler Error + ${object.user_id.user_email or ''} + ${object.user_id.user_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 :

+ + +${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'} + + +

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.
+Database : ${ctx.get('dbname')} +

+ + ]]>
+
+ +
+
diff --git a/scheduler_error_mailer/static/description/icon.png b/scheduler_error_mailer/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6b22abf97322d7e40e7a605b813376aad99937f9 GIT binary patch literal 5032 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 yv1*|EnN!URIR7saFr*9I3zQ&NEv<0000 Date: Mon, 15 Sep 2014 21:44:29 +0200 Subject: [PATCH 07/34] [FIX] renamed 'email_template' m2o field in 'email_template_id' in scheduler_error_mailer module --- scheduler_error_mailer/i18n/en.po | 79 ++++++++++++++++++++++++ scheduler_error_mailer/i18n/pt_BR.po | 80 +++++++++++++++++++++++++ scheduler_error_mailer/i18n/sl.po | 80 +++++++++++++++++++++++++ scheduler_error_mailer/ir_cron.py | 7 ++- scheduler_error_mailer/ir_cron.xml | 2 +- scheduler_error_mailer/ir_cron_demo.xml | 2 +- 6 files changed, 245 insertions(+), 5 deletions(-) create mode 100644 scheduler_error_mailer/i18n/en.po create mode 100644 scheduler_error_mailer/i18n/pt_BR.po create mode 100644 scheduler_error_mailer/i18n/sl.po diff --git a/scheduler_error_mailer/i18n/en.po b/scheduler_error_mailer/i18n/en.po new file mode 100644 index 000000000..002a624c9 --- /dev/null +++ b/scheduler_error_mailer/i18n/en.po @@ -0,0 +1,79 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * scheduler_error_mailer +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-29 11:14+0000\n" +"PO-Revision-Date: 2015-09-18 13:56+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: English (http://www.transifex.com/oca/OCA-server-tools-8-0/language/en/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: scheduler_error_mailer +#: model:email.template,body_html:scheduler_error_mailer.scheduler_error_mailer +msgid "" +"\n" +"
\n" +"\n" +"

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

\n" +"\n" +"\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"\n" +"\n" +"

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

\n" +"\n" +"

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

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

\n" +"--
\n" +"Automatic e-mail sent by OpenERP. Do not reply.
\n" +"Database : ${ctx.get('dbname')}\n" +"

\n" +"
\n" +" " +msgstr "\n
\n\n

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

\n\n\n${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n\n\n

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

\n\n

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

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

\n--
\nAutomatic e-mail sent by OpenERP. Do not reply.
\nDatabase : ${ctx.get('dbname')}\n

\n
\n " + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/ir_cron.py:75 +#, python-format +msgid "Error :" +msgstr "Error :" + +#. module: scheduler_error_mailer +#: field:ir.cron,email_template_id:0 +msgid "Error E-mail Template" +msgstr "Error E-mail Template" + +#. module: scheduler_error_mailer +#: help:ir.cron,email_template_id:0 +msgid "Select the email template that will be sent when this scheduler fails." +msgstr "Select the email template that will be sent when this scheduler fails." + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/ir_cron.py:76 +#, python-format +msgid "Task failure with UID = %d." +msgstr "Task failure with UID = %d." + +#. 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 "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" diff --git a/scheduler_error_mailer/i18n/pt_BR.po b/scheduler_error_mailer/i18n/pt_BR.po new file mode 100644 index 000000000..4ad2412b1 --- /dev/null +++ b/scheduler_error_mailer/i18n/pt_BR.po @@ -0,0 +1,80 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * scheduler_error_mailer +# +# Translators: +# Armando Vulcano Junior , 2015 +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-29 11:14+0000\n" +"PO-Revision-Date: 2015-09-18 23:44+0000\n" +"Last-Translator: Armando Vulcano Junior \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-server-tools-8-0/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: scheduler_error_mailer +#: model:email.template,body_html:scheduler_error_mailer.scheduler_error_mailer +msgid "" +"\n" +"
\n" +"\n" +"

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

\n" +"\n" +"\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"\n" +"\n" +"

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

\n" +"\n" +"

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

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

\n" +"--
\n" +"Automatic e-mail sent by OpenERP. Do not reply.
\n" +"Database : ${ctx.get('dbname')}\n" +"

\n" +"
\n" +" " +msgstr "" + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/ir_cron.py:75 +#, python-format +msgid "Error :" +msgstr "Erro" + +#. module: scheduler_error_mailer +#: field:ir.cron,email_template_id:0 +msgid "Error E-mail Template" +msgstr "Modelo de Erro de E-mail" + +#. module: scheduler_error_mailer +#: help:ir.cron,email_template_id:0 +msgid "Select the email template that will be sent when this scheduler fails." +msgstr "Selecione o modelo de email que será enviado quando o agendador falhar." + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/ir_cron.py:76 +#, python-format +msgid "Task failure with UID = %d." +msgstr "Tarefa falhou com UID = %d." + +#. 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 "[DB ${ctx.get('dbname')}] Agendador '${object.name or ''}' FALHOU" diff --git a/scheduler_error_mailer/i18n/sl.po b/scheduler_error_mailer/i18n/sl.po new file mode 100644 index 000000000..821a93011 --- /dev/null +++ b/scheduler_error_mailer/i18n/sl.po @@ -0,0 +1,80 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * scheduler_error_mailer +# +# Translators: +# Matjaž Mozetič , 2015 +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-29 11:14+0000\n" +"PO-Revision-Date: 2015-09-26 07:36+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-server-tools-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: scheduler_error_mailer +#: model:email.template,body_html:scheduler_error_mailer.scheduler_error_mailer +msgid "" +"\n" +"
\n" +"\n" +"

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

\n" +"\n" +"\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"\n" +"\n" +"

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

\n" +"\n" +"

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

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

\n" +"--
\n" +"Automatic e-mail sent by OpenERP. Do not reply.
\n" +"Database : ${ctx.get('dbname')}\n" +"

\n" +"
\n" +" " +msgstr "\n
\n\n

OpenERP je poskušal zagnati razporejevalec ${object.name or ''} v podatkovni bazi ${ctx.get('dbname')} , a ni uspel. Obvestilo o napaki:

\n\n\n${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n\n\n

Preverite dnevnike OpenERP strežnika za pridobitev več informacij o težavi.

\n\n

Lastnosti razporejevalca ${object.name or ''} :

\n
    \n
  • Model : ${object.model or ''}
  • \n
  • Metoda : ${object.function or ''}
  • \n
  • Argumenti : ${object.args or ''}
  • \n
  • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
  • \n
  • Število klicev : ${object.numbercall or '0'}
  • \n
  • Zgrešene ponovitve : ${object.doall}
  • \n
  • Uporabnik : ${object.user_id.name or ''}
  • \n
\n\n

\n--
\nSamodejno sporočilo poslano iz OpenERP. Ne odgovarjajte.
\nPodatkovna baza : ${ctx.get('dbname')}\n

\n
\n " + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/ir_cron.py:75 +#, python-format +msgid "Error :" +msgstr "Napaka:" + +#. module: scheduler_error_mailer +#: field:ir.cron,email_template_id:0 +msgid "Error E-mail Template" +msgstr "Predloga obvestila o napaki" + +#. module: scheduler_error_mailer +#: help:ir.cron,email_template_id:0 +msgid "Select the email template that will be sent when this scheduler fails." +msgstr "Izberite predlogo za razpošiljanje ob napakah razporejevalca." + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/ir_cron.py:76 +#, python-format +msgid "Task failure with UID = %d." +msgstr "Napaka pri opravilu UID = %d." + +#. 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 "[DB ${ctx.get('dbname')}] Razporejevalec '${object.name or ''}' NEUSPEŠEN" diff --git a/scheduler_error_mailer/ir_cron.py b/scheduler_error_mailer/ir_cron.py index 17b0f2c30..548728bf4 100644 --- a/scheduler_error_mailer/ir_cron.py +++ b/scheduler_error_mailer/ir_cron.py @@ -35,9 +35,10 @@ class ir_cron(orm.Model): _inherit = "ir.cron" _columns = { - 'email_template': fields.many2one( + '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."), } @@ -50,7 +51,7 @@ class ir_cron(orm.Model): my_cron = self.browse(cr, uid, job_id) - if my_cron.email_template: + if my_cron.email_template_id: # we put the job_exception in context to be able to print it inside # the email template context = { @@ -62,7 +63,7 @@ class ir_cron(orm.Model): context) self.pool['email.template'].send_mail( - cr, SUPERUSER_ID, my_cron.email_template.id, my_cron.id, + cr, SUPERUSER_ID, my_cron.email_template_id.id, my_cron.id, force_send=True, context=context) return res diff --git a/scheduler_error_mailer/ir_cron.xml b/scheduler_error_mailer/ir_cron.xml index ee1bcfd6d..74a3d3edf 100644 --- a/scheduler_error_mailer/ir_cron.xml +++ b/scheduler_error_mailer/ir_cron.xml @@ -14,7 +14,7 @@ - + diff --git a/scheduler_error_mailer/ir_cron_demo.xml b/scheduler_error_mailer/ir_cron_demo.xml index 4c6fc5e7b..4c108040c 100644 --- a/scheduler_error_mailer/ir_cron_demo.xml +++ b/scheduler_error_mailer/ir_cron_demo.xml @@ -17,9 +17,9 @@ hours -1 - ir.cron _test_scheduler_failure + From 9d1e7a4f19bb062edae58a2c9e681ef7ed29a197 Mon Sep 17 00:00:00 2001 From: "Atchuthan, Sodexis" Date: Wed, 18 May 2016 16:23:01 +0530 Subject: [PATCH 08/34] [MIG][9.0] scheduler_error_mailer OCA Transbot updated translations from Transifex --- scheduler_error_mailer/README.rst | 67 +++++++++++++++ scheduler_error_mailer/__init__.py | 26 +----- scheduler_error_mailer/__openerp__.py | 47 +++-------- .../{ => data}/ir_cron_email_tpl.xml | 36 +++++---- scheduler_error_mailer/demo/ir_cron_demo.xml | 27 +++++++ scheduler_error_mailer/i18n/en.po | 79 ------------------ scheduler_error_mailer/i18n/pt_BR.po | 40 ++++----- scheduler_error_mailer/i18n/sl.po | 42 +++++----- scheduler_error_mailer/i18n/zh_CN.po | 81 +++++++++++++++++++ scheduler_error_mailer/ir_cron.py | 76 ----------------- scheduler_error_mailer/ir_cron.xml | 24 ------ scheduler_error_mailer/ir_cron_demo.xml | 26 ------ scheduler_error_mailer/models/__init__.py | 6 ++ scheduler_error_mailer/models/ir_cron.py | 55 +++++++++++++ scheduler_error_mailer/views/ir_cron.xml | 22 +++++ 15 files changed, 335 insertions(+), 319 deletions(-) create mode 100644 scheduler_error_mailer/README.rst rename scheduler_error_mailer/{ => data}/ir_cron_email_tpl.xml (58%) create mode 100644 scheduler_error_mailer/demo/ir_cron_demo.xml delete mode 100644 scheduler_error_mailer/i18n/en.po create mode 100644 scheduler_error_mailer/i18n/zh_CN.po delete mode 100644 scheduler_error_mailer/ir_cron.py delete mode 100644 scheduler_error_mailer/ir_cron.xml delete mode 100644 scheduler_error_mailer/ir_cron_demo.xml create mode 100644 scheduler_error_mailer/models/__init__.py create mode 100644 scheduler_error_mailer/models/ir_cron.py create mode 100644 scheduler_error_mailer/views/ir_cron.xml 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 d8dd3eb36..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': 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/i18n/en.po b/scheduler_error_mailer/i18n/en.po deleted file mode 100644 index 002a624c9..000000000 --- a/scheduler_error_mailer/i18n/en.po +++ /dev/null @@ -1,79 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * scheduler_error_mailer -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: server-tools (8.0)\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-29 11:14+0000\n" -"PO-Revision-Date: 2015-09-18 13:56+0000\n" -"Last-Translator: OCA Transbot \n" -"Language-Team: English (http://www.transifex.com/oca/OCA-server-tools-8-0/language/en/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Language: en\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: scheduler_error_mailer -#: model:email.template,body_html:scheduler_error_mailer.scheduler_error_mailer -msgid "" -"\n" -"
\n" -"\n" -"

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

\n" -"\n" -"\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" -"\n" -"\n" -"

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

\n" -"\n" -"

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

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

\n" -"--
\n" -"Automatic e-mail sent by OpenERP. Do not reply.
\n" -"Database : ${ctx.get('dbname')}\n" -"

\n" -"
\n" -" " -msgstr "\n
\n\n

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

\n\n\n${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n\n\n

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

\n\n

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

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

\n--
\nAutomatic e-mail sent by OpenERP. Do not reply.
\nDatabase : ${ctx.get('dbname')}\n

\n
\n " - -#. module: scheduler_error_mailer -#: code:addons/scheduler_error_mailer/ir_cron.py:75 -#, python-format -msgid "Error :" -msgstr "Error :" - -#. module: scheduler_error_mailer -#: field:ir.cron,email_template_id:0 -msgid "Error E-mail Template" -msgstr "Error E-mail Template" - -#. module: scheduler_error_mailer -#: help:ir.cron,email_template_id:0 -msgid "Select the email template that will be sent when this scheduler fails." -msgstr "Select the email template that will be sent when this scheduler fails." - -#. module: scheduler_error_mailer -#: code:addons/scheduler_error_mailer/ir_cron.py:76 -#, python-format -msgid "Task failure with UID = %d." -msgstr "Task failure with UID = %d." - -#. 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 "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" diff --git a/scheduler_error_mailer/i18n/pt_BR.po b/scheduler_error_mailer/i18n/pt_BR.po index 4ad2412b1..beacbdd1c 100644 --- a/scheduler_error_mailer/i18n/pt_BR.po +++ b/scheduler_error_mailer/i18n/pt_BR.po @@ -3,15 +3,15 @@ # * scheduler_error_mailer # # Translators: -# Armando Vulcano Junior , 2015 +# OCA Transbot , 2016 msgid "" msgstr "" -"Project-Id-Version: server-tools (8.0)\n" +"Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-29 11:14+0000\n" -"PO-Revision-Date: 2015-09-18 23:44+0000\n" -"Last-Translator: Armando Vulcano Junior \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-server-tools-8-0/language/pt_BR/)\n" +"POT-Creation-Date: 2016-08-06 02:49+0000\n" +"PO-Revision-Date: 2016-08-06 02:49+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -19,9 +19,10 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: scheduler_error_mailer -#: model:email.template,body_html:scheduler_error_mailer.scheduler_error_mailer +#: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer msgid "" "\n" +" \n" "
\n" "\n" "

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

\n" @@ -49,32 +50,33 @@ msgid "" "Database : ${ctx.get('dbname')}\n" "

\n" "
\n" -" " +" \n" +" " msgstr "" #. module: scheduler_error_mailer -#: code:addons/scheduler_error_mailer/ir_cron.py:75 -#, python-format -msgid "Error :" -msgstr "Erro" - -#. module: scheduler_error_mailer -#: field:ir.cron,email_template_id:0 +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id msgid "Error E-mail Template" msgstr "Modelo de Erro de E-mail" #. module: scheduler_error_mailer -#: help:ir.cron,email_template_id:0 +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id msgid "Select the email template that will be sent when this scheduler fails." -msgstr "Selecione o modelo de email que será enviado quando o agendador falhar." +msgstr "" +"Selecione o modelo de email que será enviado quando o agendador falhar." #. module: scheduler_error_mailer -#: code:addons/scheduler_error_mailer/ir_cron.py:76 +#: code:addons/scheduler_error_mailer/models/ir_cron.py:55 #, python-format msgid "Task failure with UID = %d." msgstr "Tarefa falhou com UID = %d." #. module: scheduler_error_mailer -#: model:email.template,subject:scheduler_error_mailer.scheduler_error_mailer +#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "[DB ${ctx.get('dbname')}] Agendador '${object.name or ''}' FALHOU" + +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "ir.cron" +msgstr "" diff --git a/scheduler_error_mailer/i18n/sl.po b/scheduler_error_mailer/i18n/sl.po index 821a93011..13ac3181b 100644 --- a/scheduler_error_mailer/i18n/sl.po +++ b/scheduler_error_mailer/i18n/sl.po @@ -3,15 +3,15 @@ # * scheduler_error_mailer # # Translators: -# Matjaž Mozetič , 2015 +# OCA Transbot , 2016 msgid "" msgstr "" -"Project-Id-Version: server-tools (8.0)\n" +"Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-29 11:14+0000\n" -"PO-Revision-Date: 2015-09-26 07:36+0000\n" -"Last-Translator: Matjaž Mozetič \n" -"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-server-tools-8-0/language/sl/)\n" +"POT-Creation-Date: 2016-08-06 02:49+0000\n" +"PO-Revision-Date: 2016-08-06 02:49+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -19,9 +19,10 @@ msgstr "" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" #. module: scheduler_error_mailer -#: model:email.template,body_html:scheduler_error_mailer.scheduler_error_mailer +#: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer msgid "" "\n" +" \n" "
\n" "\n" "

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

\n" @@ -49,32 +50,33 @@ msgid "" "Database : ${ctx.get('dbname')}\n" "

\n" "
\n" -" " -msgstr "\n
\n\n

OpenERP je poskušal zagnati razporejevalec ${object.name or ''} v podatkovni bazi ${ctx.get('dbname')} , a ni uspel. Obvestilo o napaki:

\n\n\n${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n\n\n

Preverite dnevnike OpenERP strežnika za pridobitev več informacij o težavi.

\n\n

Lastnosti razporejevalca ${object.name or ''} :

\n
    \n
  • Model : ${object.model or ''}
  • \n
  • Metoda : ${object.function or ''}
  • \n
  • Argumenti : ${object.args or ''}
  • \n
  • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
  • \n
  • Število klicev : ${object.numbercall or '0'}
  • \n
  • Zgrešene ponovitve : ${object.doall}
  • \n
  • Uporabnik : ${object.user_id.name or ''}
  • \n
\n\n

\n--
\nSamodejno sporočilo poslano iz OpenERP. Ne odgovarjajte.
\nPodatkovna baza : ${ctx.get('dbname')}\n

\n
\n " +" \n" +" " +msgstr "" #. module: scheduler_error_mailer -#: code:addons/scheduler_error_mailer/ir_cron.py:75 -#, python-format -msgid "Error :" -msgstr "Napaka:" - -#. module: scheduler_error_mailer -#: field:ir.cron,email_template_id:0 +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id msgid "Error E-mail Template" msgstr "Predloga obvestila o napaki" #. module: scheduler_error_mailer -#: help:ir.cron,email_template_id:0 +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "Izberite predlogo za razpošiljanje ob napakah razporejevalca." #. module: scheduler_error_mailer -#: code:addons/scheduler_error_mailer/ir_cron.py:76 +#: code:addons/scheduler_error_mailer/models/ir_cron.py:55 #, python-format msgid "Task failure with UID = %d." msgstr "Napaka pri opravilu UID = %d." #. module: scheduler_error_mailer -#: model:email.template,subject:scheduler_error_mailer.scheduler_error_mailer +#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" -msgstr "[DB ${ctx.get('dbname')}] Razporejevalec '${object.name or ''}' NEUSPEŠEN" +msgstr "" +"[DB ${ctx.get('dbname')}] Razporejevalec '${object.name or ''}' NEUSPEŠEN" + +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "ir.cron" +msgstr "" diff --git a/scheduler_error_mailer/i18n/zh_CN.po b/scheduler_error_mailer/i18n/zh_CN.po new file mode 100644 index 000000000..f312e6e0c --- /dev/null +++ b/scheduler_error_mailer/i18n/zh_CN.po @@ -0,0 +1,81 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * scheduler_error_mailer +# +# Translators: +# Jeffery Chenn , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-31 11:58+0000\n" +"PO-Revision-Date: 2016-08-31 11:58+0000\n" +"Last-Translator: Jeffery Chenn , 2016\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: scheduler_error_mailer +#: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer +msgid "" +"\n" +" \n" +"
\n" +"\n" +"

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

\n" +"\n" +"\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"\n" +"\n" +"

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

\n" +"\n" +"

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

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

\n" +"--
\n" +"Automatic e-mail sent by OpenERP. Do not reply.
\n" +"Database : ${ctx.get('dbname')}\n" +"

\n" +"
\n" +" \n" +" " +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id +msgid "Error E-mail Template" +msgstr "错误E-mail 模板" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id +msgid "Select the email template that will be sent when this scheduler fails." +msgstr "" + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/models/ir_cron.py:55 +#, python-format +msgid "Task failure with UID = %d." +msgstr "" + +#. module: scheduler_error_mailer +#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer +msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "ir.cron" +msgstr "" 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 + + + + + + + + + From e94e321dbd34607bcbc7dc55d217a76987fbfc1d Mon Sep 17 00:00:00 2001 From: MonsieurB Date: Fri, 3 Feb 2017 15:20:33 +0100 Subject: [PATCH 09/34] migrate to V10 OCA Transbot updated translations from Transifex --- scheduler_error_mailer/README.rst | 2 +- .../{__openerp__.py => __manifest__.py} | 2 +- .../data/ir_cron_email_tpl.xml | 12 +-- scheduler_error_mailer/i18n/de.po | 83 ++++++++++++++++++ scheduler_error_mailer/i18n/es.po | 84 +++++++++++++++++++ scheduler_error_mailer/i18n/pt_BR.po | 6 +- .../i18n/scheduler_error_mailer.pot | 6 +- scheduler_error_mailer/i18n/sl.po | 6 +- scheduler_error_mailer/i18n/zh_CN.po | 6 +- scheduler_error_mailer/models/ir_cron.py | 4 +- 10 files changed, 186 insertions(+), 25 deletions(-) rename scheduler_error_mailer/{__openerp__.py => __manifest__.py} (95%) create mode 100644 scheduler_error_mailer/i18n/de.po create mode 100644 scheduler_error_mailer/i18n/es.po diff --git a/scheduler_error_mailer/README.rst b/scheduler_error_mailer/README.rst index 269dec34c..9ba801de4 100644 --- a/scheduler_error_mailer/README.rst +++ b/scheduler_error_mailer/README.rst @@ -24,7 +24,7 @@ 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 + :target: https://runbot.odoo-community.org/runbot/149/10.0 Bug Tracker =========== diff --git a/scheduler_error_mailer/__openerp__.py b/scheduler_error_mailer/__manifest__.py similarity index 95% rename from scheduler_error_mailer/__openerp__.py rename to scheduler_error_mailer/__manifest__.py index cee08d1c7..0da065b2b 100644 --- a/scheduler_error_mailer/__openerp__.py +++ b/scheduler_error_mailer/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Scheduler Error Mailer', - 'version': '9.0.1.0.0', + 'version': '10.0.1.0.0', 'category': 'Extra Tools', 'license': 'AGPL-3', 'author': "Akretion,Sodexis,Odoo Community Association (OCA)", diff --git a/scheduler_error_mailer/data/ir_cron_email_tpl.xml b/scheduler_error_mailer/data/ir_cron_email_tpl.xml index b8e6a2598..4e760765a 100644 --- a/scheduler_error_mailer/data/ir_cron_email_tpl.xml +++ b/scheduler_error_mailer/data/ir_cron_email_tpl.xml @@ -1,10 +1,4 @@ - @@ -21,13 +15,13 @@ -

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

+

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

${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'} -

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

+

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

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

    @@ -42,7 +36,7 @@ ${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get

    --
    -Automatic e-mail sent by OpenERP. Do not reply.
    +Automatic e-mail sent by Odoo. Do not reply.
    Database : ${ctx.get('dbname')}

    diff --git a/scheduler_error_mailer/i18n/de.po b/scheduler_error_mailer/i18n/de.po new file mode 100644 index 000000000..04a086156 --- /dev/null +++ b/scheduler_error_mailer/i18n/de.po @@ -0,0 +1,83 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * scheduler_error_mailer +# +# Translators: +# Niki Waibel , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-08 03:37+0000\n" +"PO-Revision-Date: 2017-02-08 03:37+0000\n" +"Last-Translator: Niki Waibel , 2017\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: scheduler_error_mailer +#: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer +msgid "" +"\n" +" \n" +"
    \n" +"\n" +"

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

    \n" +"\n" +"\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"\n" +"\n" +"

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

    \n" +"\n" +"

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

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

    \n" +"--
    \n" +"Automatic e-mail sent by Odoo. Do not reply.
    \n" +"Database : ${ctx.get('dbname')}\n" +"

    \n" +"
    \n" +" \n" +" " +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id +msgid "Error E-mail Template" +msgstr "Fehler e-Mail Vorlage" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id +msgid "Select the email template that will be sent when this scheduler fails." +msgstr "" +"Wähle die e-Mail Vorlage welche bei einem Fehler dieses Schedulers gesendet " +"wird." + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/models/ir_cron.py:55 +#, python-format +msgid "Task failure with UID = %d." +msgstr "Task Fehler von UID = %d." + +#. module: scheduler_error_mailer +#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer +msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" +msgstr "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FEHLER" + +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "ir.cron" +msgstr "ir.cron" diff --git a/scheduler_error_mailer/i18n/es.po b/scheduler_error_mailer/i18n/es.po new file mode 100644 index 000000000..bc390a1be --- /dev/null +++ b/scheduler_error_mailer/i18n/es.po @@ -0,0 +1,84 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * scheduler_error_mailer +# +# Translators: +# OCA Transbot , 2017 +# Fernando Lara , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-22 00:55+0000\n" +"PO-Revision-Date: 2017-02-22 00:55+0000\n" +"Last-Translator: Fernando Lara , 2017\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: scheduler_error_mailer +#: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer +msgid "" +"\n" +" \n" +"
    \n" +"\n" +"

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

    \n" +"\n" +"\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"\n" +"\n" +"

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

    \n" +"\n" +"

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

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

    \n" +"--
    \n" +"Automatic e-mail sent by Odoo. Do not reply.
    \n" +"Database : ${ctx.get('dbname')}\n" +"

    \n" +"
    \n" +" \n" +" " +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id +msgid "Error E-mail Template" +msgstr "Plantilla de correo electrónico de error" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id +msgid "Select the email template that will be sent when this scheduler fails." +msgstr "" +"Seleccione la plantilla de correo electrónico que se enviará cuando falla " +"este planificador." + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/models/ir_cron.py:55 +#, python-format +msgid "Task failure with UID = %d." +msgstr "Error de Tarea con UID = %d." + +#. module: scheduler_error_mailer +#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer +msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "ir.cron" +msgstr "ir.cron" diff --git a/scheduler_error_mailer/i18n/pt_BR.po b/scheduler_error_mailer/i18n/pt_BR.po index beacbdd1c..231579b1e 100644 --- a/scheduler_error_mailer/i18n/pt_BR.po +++ b/scheduler_error_mailer/i18n/pt_BR.po @@ -25,13 +25,13 @@ msgid "" " \n" "
    \n" "\n" -"

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

    \n" +"

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

    \n" "\n" "\n" "${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" "\n" "\n" -"

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

    \n" +"

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

    \n" "\n" "

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

    \n" "
      \n" @@ -46,7 +46,7 @@ msgid "" "\n" "

      \n" "--
      \n" -"Automatic e-mail sent by OpenERP. Do not reply.
      \n" +"Automatic e-mail sent by Odoo. Do not reply.
      \n" "Database : ${ctx.get('dbname')}\n" "

      \n" "
    \n" diff --git a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot index 95fe5ca84..0b55c781e 100644 --- a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot +++ b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot @@ -20,13 +20,13 @@ msgstr "" msgid "\n" "
    \n" "\n" -"

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

    \n" +"

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

    \n" "\n" "\n" "${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" "\n" "\n" -"

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

    \n" +"

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

    \n" "\n" "

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

    \n" "
      \n" @@ -41,7 +41,7 @@ msgid "\n" "\n" "

      \n" "--
      \n" -"Automatic e-mail sent by OpenERP. Do not reply.
      \n" +"Automatic e-mail sent by Odoo. Do not reply.
      \n" "Database : ${ctx.get('dbname')}\n" "

      \n" "
    \n" diff --git a/scheduler_error_mailer/i18n/sl.po b/scheduler_error_mailer/i18n/sl.po index 13ac3181b..3f6d1f5a0 100644 --- a/scheduler_error_mailer/i18n/sl.po +++ b/scheduler_error_mailer/i18n/sl.po @@ -25,13 +25,13 @@ msgid "" " \n" "
    \n" "\n" -"

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

    \n" +"

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

    \n" "\n" "\n" "${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" "\n" "\n" -"

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

    \n" +"

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

    \n" "\n" "

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

    \n" "
      \n" @@ -46,7 +46,7 @@ msgid "" "\n" "

      \n" "--
      \n" -"Automatic e-mail sent by OpenERP. Do not reply.
      \n" +"Automatic e-mail sent by Odoo. Do not reply.
      \n" "Database : ${ctx.get('dbname')}\n" "

      \n" "
    \n" diff --git a/scheduler_error_mailer/i18n/zh_CN.po b/scheduler_error_mailer/i18n/zh_CN.po index f312e6e0c..39488e991 100644 --- a/scheduler_error_mailer/i18n/zh_CN.po +++ b/scheduler_error_mailer/i18n/zh_CN.po @@ -25,13 +25,13 @@ msgid "" " \n" "
    \n" "\n" -"

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

    \n" +"

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

    \n" "\n" "\n" "${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" "\n" "\n" -"

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

    \n" +"

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

    \n" "\n" "

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

    \n" "
      \n" @@ -46,7 +46,7 @@ msgid "" "\n" "

      \n" "--
      \n" -"Automatic e-mail sent by OpenERP. Do not reply.
      \n" +"Automatic e-mail sent by Odoo. Do not reply.
      \n" "Database : ${ctx.get('dbname')}\n" "

      \n" "
    \n" diff --git a/scheduler_error_mailer/models/ir_cron.py b/scheduler_error_mailer/models/ir_cron.py index a6134be15..efb2a4bed 100644 --- a/scheduler_error_mailer/models/ir_cron.py +++ b/scheduler_error_mailer/models/ir_cron.py @@ -3,8 +3,8 @@ # © 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 +from odoo import models, fields, api, _ +from odoo.exceptions import UserError import logging From 66ae223448c958bb2a515d0ef6d2537f69e1e7f3 Mon Sep 17 00:00:00 2001 From: Andy Teijelo Date: Tue, 21 Mar 2017 17:17:08 -0400 Subject: [PATCH 10/34] [FIX] scheduler error mailer font typo (#765) * [FIX] scheduler_error_mailer font typo * [REM] Deleting scheduler_error_mailer.pot OCA Transbot updated translations from Transifex --- .../data/ir_cron_email_tpl.xml | 2 +- scheduler_error_mailer/i18n/de.po | 2 +- scheduler_error_mailer/i18n/es.po | 2 +- .../{scheduler_error_mailer.pot => hr.po} | 49 ++++++++++--------- scheduler_error_mailer/i18n/pt_BR.po | 2 +- scheduler_error_mailer/i18n/sl.po | 2 +- scheduler_error_mailer/i18n/zh_CN.po | 2 +- 7 files changed, 33 insertions(+), 28 deletions(-) rename scheduler_error_mailer/i18n/{scheduler_error_mailer.pot => hr.po} (63%) diff --git a/scheduler_error_mailer/data/ir_cron_email_tpl.xml b/scheduler_error_mailer/data/ir_cron_email_tpl.xml index 4e760765a..a6696e59f 100644 --- a/scheduler_error_mailer/data/ir_cron_email_tpl.xml +++ b/scheduler_error_mailer/data/ir_cron_email_tpl.xml @@ -13,7 +13,7 @@ +

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

    diff --git a/scheduler_error_mailer/i18n/de.po b/scheduler_error_mailer/i18n/de.po index 04a086156..0d3289f65 100644 --- a/scheduler_error_mailer/i18n/de.po +++ b/scheduler_error_mailer/i18n/de.po @@ -23,7 +23,7 @@ msgstr "" msgid "" "\n" " \n" -"
    \n" +"
    \n" "\n" "

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

    \n" "\n" diff --git a/scheduler_error_mailer/i18n/es.po b/scheduler_error_mailer/i18n/es.po index bc390a1be..886bd77ea 100644 --- a/scheduler_error_mailer/i18n/es.po +++ b/scheduler_error_mailer/i18n/es.po @@ -24,7 +24,7 @@ msgstr "" msgid "" "\n" " \n" -"
    \n" +"
    \n" "\n" "

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

    \n" "\n" diff --git a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot b/scheduler_error_mailer/i18n/hr.po similarity index 63% rename from scheduler_error_mailer/i18n/scheduler_error_mailer.pot rename to scheduler_error_mailer/i18n/hr.po index 0b55c781e..ad49ae240 100644 --- a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot +++ b/scheduler_error_mailer/i18n/hr.po @@ -1,24 +1,29 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * scheduler_error_mailer -# +# * scheduler_error_mailer +# +# Translators: +# Bole , 2018 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0rc1\n" +"Project-Id-Version: Odoo Server 10.0\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" +"POT-Creation-Date: 2018-03-02 18:41+0000\n" +"PO-Revision-Date: 2018-03-02 18:41+0000\n" +"Last-Translator: Bole , 2018\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #. module: scheduler_error_mailer -#: model:email.template,body_html:scheduler_error_mailer.scheduler_error_mailer -msgid "\n" -"
    \n" +#: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer +msgid "" +"\n" +" \n" +"
    \n" "\n" "

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

    \n" "\n" @@ -45,32 +50,32 @@ msgid "\n" "Database : ${ctx.get('dbname')}\n" "

    \n" "
    \n" -" " +" \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 +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id msgid "Error E-mail Template" msgstr "" #. module: scheduler_error_mailer -#: help:ir.cron,email_template:0 +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id 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 +#: code:addons/scheduler_error_mailer/models/ir_cron.py:55 #, python-format msgid "Task failure with UID = %d." msgstr "" #. module: scheduler_error_mailer -#: model:email.template,subject:scheduler_error_mailer.scheduler_error_mailer +#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "ir.cron" +msgstr "ir.cron" diff --git a/scheduler_error_mailer/i18n/pt_BR.po b/scheduler_error_mailer/i18n/pt_BR.po index 231579b1e..299bdd685 100644 --- a/scheduler_error_mailer/i18n/pt_BR.po +++ b/scheduler_error_mailer/i18n/pt_BR.po @@ -23,7 +23,7 @@ msgstr "" msgid "" "\n" " \n" -"
    \n" +"
    \n" "\n" "

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

    \n" "\n" diff --git a/scheduler_error_mailer/i18n/sl.po b/scheduler_error_mailer/i18n/sl.po index 3f6d1f5a0..cfe317484 100644 --- a/scheduler_error_mailer/i18n/sl.po +++ b/scheduler_error_mailer/i18n/sl.po @@ -23,7 +23,7 @@ msgstr "" msgid "" "\n" " \n" -"
    \n" +"
    \n" "\n" "

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

    \n" "\n" diff --git a/scheduler_error_mailer/i18n/zh_CN.po b/scheduler_error_mailer/i18n/zh_CN.po index 39488e991..0d3711e24 100644 --- a/scheduler_error_mailer/i18n/zh_CN.po +++ b/scheduler_error_mailer/i18n/zh_CN.po @@ -23,7 +23,7 @@ msgstr "" msgid "" "\n" " \n" -"
    \n" +"
    \n" "\n" "

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

    \n" "\n" From 9f32061d59a3767acff6d2b7f338e847ab14ee21 Mon Sep 17 00:00:00 2001 From: Achref Mhadhbi Date: Thu, 21 Jun 2018 12:15:53 +0200 Subject: [PATCH 11/34] [MIG] scheduler_error_mailer: Migration to 11.0 [UPD] Update scheduler_error_mailer.pot --- scheduler_error_mailer/README.rst | 3 +- scheduler_error_mailer/__init__.py | 1 - scheduler_error_mailer/__manifest__.py | 4 +- scheduler_error_mailer/demo/ir_cron_demo.xml | 6 +- scheduler_error_mailer/i18n/de.po | 59 ++++++++-- scheduler_error_mailer/i18n/es.po | 59 ++++++++-- scheduler_error_mailer/i18n/hr.po | 61 +++++++++-- scheduler_error_mailer/i18n/pt_BR.po | 61 ++++++++--- .../i18n/scheduler_error_mailer.pot | 103 ++++++++++++++++++ scheduler_error_mailer/i18n/sl.po | 61 ++++++++--- scheduler_error_mailer/i18n/zh_CN.po | 59 ++++++++-- scheduler_error_mailer/models/__init__.py | 2 +- scheduler_error_mailer/models/ir_cron.py | 18 +-- scheduler_error_mailer/views/ir_cron.xml | 3 +- 14 files changed, 411 insertions(+), 89 deletions(-) create mode 100644 scheduler_error_mailer/i18n/scheduler_error_mailer.pot diff --git a/scheduler_error_mailer/README.rst b/scheduler_error_mailer/README.rst index 9ba801de4..db7417404 100644 --- a/scheduler_error_mailer/README.rst +++ b/scheduler_error_mailer/README.rst @@ -24,7 +24,7 @@ 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/10.0 + :target: https://runbot.odoo-community.org/runbot/149/11.0 Bug Tracker =========== @@ -49,6 +49,7 @@ Contributors * David Beal * Alexis de Lattre * Sodexis +* Achraf Mhadhbi Maintainer diff --git a/scheduler_error_mailer/__init__.py b/scheduler_error_mailer/__init__.py index cca6d9455..f55583a17 100644 --- a/scheduler_error_mailer/__init__.py +++ b/scheduler_error_mailer/__init__.py @@ -1,4 +1,3 @@ -# -*- 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). diff --git a/scheduler_error_mailer/__manifest__.py b/scheduler_error_mailer/__manifest__.py index 0da065b2b..2954d0a8e 100644 --- a/scheduler_error_mailer/__manifest__.py +++ b/scheduler_error_mailer/__manifest__.py @@ -1,11 +1,11 @@ -# -*- coding: utf-8 -*- # © 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre # © 2016 Sodexis +# © 2018 bloopark systems () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'Scheduler Error Mailer', - 'version': '10.0.1.0.0', + 'version': '11.0.1.0.0', 'category': 'Extra Tools', 'license': 'AGPL-3', 'author': "Akretion,Sodexis,Odoo Community Association (OCA)", diff --git a/scheduler_error_mailer/demo/ir_cron_demo.xml b/scheduler_error_mailer/demo/ir_cron_demo.xml index 08368e8e7..80e3c88cb 100644 --- a/scheduler_error_mailer/demo/ir_cron_demo.xml +++ b/scheduler_error_mailer/demo/ir_cron_demo.xml @@ -3,6 +3,7 @@ scheduler_error_mailer for Odoo Copyright (C) 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre Copyright (C) 2016 Sodexis + Copyright (C) 2018 bloopark systems () The licence is in the file __openerp__.py --> @@ -18,8 +19,9 @@ -1 - ir.cron - _test_scheduler_failure + + code + model._test_scheduler_failure() diff --git a/scheduler_error_mailer/i18n/de.po b/scheduler_error_mailer/i18n/de.po index 0d3289f65..cc4113013 100644 --- a/scheduler_error_mailer/i18n/de.po +++ b/scheduler_error_mailer/i18n/de.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * scheduler_error_mailer -# +# # Translators: # Niki Waibel , 2017 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2017-02-08 03:37+0000\n" "Last-Translator: Niki Waibel , 2017\n" "Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: scheduler_error_mailer @@ -23,22 +23,28 @@ msgstr "" msgid "" "\n" " \n" -"
    \n" +"
    \n" "\n" -"

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

    \n" +"

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

    \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " +"get the error message from the context.'}\n" "\n" "\n" -"

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

    \n" +"

    You may check the logs of the Odoo server to get more information about " +"this failure.

    \n" "\n" "

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

    \n" "
      \n" "
    • Model : ${object.model or ''}
    • \n" "
    • Method : ${object.function or ''}
    • \n" "
    • Arguments : ${object.args or ''}
    • \n" -"
    • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
    • \n" +"
    • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" +"
    • \n" "
    • Number of calls : ${object.numbercall or '0'}
    • \n" "
    • Repeat missed : ${object.doall}
    • \n" "
    • User : ${object.user_id.name or ''}
    • \n" @@ -54,13 +60,39 @@ msgid "" " " msgstr "" +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids +msgid "Add Channels" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids +msgid "Add Followers" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id +#, fuzzy +msgid "Email Template" +msgstr "Fehler e-Mail Vorlage" + #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Error E-mail Template" msgstr "Fehler e-Mail Vorlage" +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "Scheduled Actions" +msgstr "" + #. module: scheduler_error_mailer #: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" "Wähle die e-Mail Vorlage welche bei einem Fehler dieses Schedulers gesendet " @@ -72,12 +104,17 @@ msgstr "" msgid "Task failure with UID = %d." msgstr "Task Fehler von UID = %d." +#. module: scheduler_error_mailer +#: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server +#: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer +#: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer +msgid "Test Scheduler Error Mailer" +msgstr "" + #. module: scheduler_error_mailer #: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FEHLER" -#. module: scheduler_error_mailer -#: model:ir.model,name:scheduler_error_mailer.model_ir_cron -msgid "ir.cron" -msgstr "ir.cron" +#~ msgid "ir.cron" +#~ msgstr "ir.cron" diff --git a/scheduler_error_mailer/i18n/es.po b/scheduler_error_mailer/i18n/es.po index 886bd77ea..d283d8f4d 100644 --- a/scheduler_error_mailer/i18n/es.po +++ b/scheduler_error_mailer/i18n/es.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * scheduler_error_mailer -# +# # Translators: # OCA Transbot , 2017 # Fernando Lara , 2017 @@ -13,10 +13,10 @@ msgstr "" "PO-Revision-Date: 2017-02-22 00:55+0000\n" "Last-Translator: Fernando Lara , 2017\n" "Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: scheduler_error_mailer @@ -24,22 +24,28 @@ msgstr "" msgid "" "\n" " \n" -"
      \n" +"
      \n" "\n" -"

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

      \n" +"

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

      \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " +"get the error message from the context.'}\n" "\n" "\n" -"

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

      \n" +"

      You may check the logs of the Odoo server to get more information about " +"this failure.

      \n" "\n" "

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

      \n" "
        \n" "
      • Model : ${object.model or ''}
      • \n" "
      • Method : ${object.function or ''}
      • \n" "
      • Arguments : ${object.args or ''}
      • \n" -"
      • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
      • \n" +"
      • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" +"
      • \n" "
      • Number of calls : ${object.numbercall or '0'}
      • \n" "
      • Repeat missed : ${object.doall}
      • \n" "
      • User : ${object.user_id.name or ''}
      • \n" @@ -55,13 +61,39 @@ msgid "" " " msgstr "" +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids +msgid "Add Channels" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids +msgid "Add Followers" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id +#, fuzzy +msgid "Email Template" +msgstr "Plantilla de correo electrónico de error" + #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Error E-mail Template" msgstr "Plantilla de correo electrónico de error" +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "Scheduled Actions" +msgstr "" + #. module: scheduler_error_mailer #: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" "Seleccione la plantilla de correo electrónico que se enviará cuando falla " @@ -73,12 +105,17 @@ msgstr "" msgid "Task failure with UID = %d." msgstr "Error de Tarea con UID = %d." +#. module: scheduler_error_mailer +#: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server +#: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer +#: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer +msgid "Test Scheduler Error Mailer" +msgstr "" + #. module: scheduler_error_mailer #: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "" -#. module: scheduler_error_mailer -#: model:ir.model,name:scheduler_error_mailer.model_ir_cron -msgid "ir.cron" -msgstr "ir.cron" +#~ msgid "ir.cron" +#~ msgstr "ir.cron" diff --git a/scheduler_error_mailer/i18n/hr.po b/scheduler_error_mailer/i18n/hr.po index ad49ae240..3641fe18d 100644 --- a/scheduler_error_mailer/i18n/hr.po +++ b/scheduler_error_mailer/i18n/hr.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * scheduler_error_mailer -# +# # Translators: # Bole , 2018 msgid "" @@ -12,33 +12,40 @@ msgstr "" "PO-Revision-Date: 2018-03-02 18:41+0000\n" "Last-Translator: Bole , 2018\n" "Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #. module: scheduler_error_mailer #: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer msgid "" "\n" " \n" -"
        \n" +"
        \n" "\n" -"

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

        \n" +"

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

        \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " +"get the error message from the context.'}\n" "\n" "\n" -"

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

        \n" +"

        You may check the logs of the Odoo server to get more information about " +"this failure.

        \n" "\n" "

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

        \n" "
          \n" "
        • Model : ${object.model or ''}
        • \n" "
        • Method : ${object.function or ''}
        • \n" "
        • Arguments : ${object.args or ''}
        • \n" -"
        • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
        • \n" +"
        • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" +"
        • \n" "
        • Number of calls : ${object.numbercall or '0'}
        • \n" "
        • Repeat missed : ${object.doall}
        • \n" "
        • User : ${object.user_id.name or ''}
        • \n" @@ -54,13 +61,38 @@ msgid "" " " msgstr "" +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids +msgid "Add Channels" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids +msgid "Add Followers" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id +msgid "Email Template" +msgstr "" + #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Error E-mail Template" msgstr "" +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "Scheduled Actions" +msgstr "" + #. module: scheduler_error_mailer #: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" @@ -70,12 +102,17 @@ msgstr "" msgid "Task failure with UID = %d." msgstr "" +#. module: scheduler_error_mailer +#: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server +#: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer +#: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer +msgid "Test Scheduler Error Mailer" +msgstr "" + #. module: scheduler_error_mailer #: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "" -#. module: scheduler_error_mailer -#: model:ir.model,name:scheduler_error_mailer.model_ir_cron -msgid "ir.cron" -msgstr "ir.cron" +#~ msgid "ir.cron" +#~ msgstr "ir.cron" diff --git a/scheduler_error_mailer/i18n/pt_BR.po b/scheduler_error_mailer/i18n/pt_BR.po index 299bdd685..6f91016b9 100644 --- a/scheduler_error_mailer/i18n/pt_BR.po +++ b/scheduler_error_mailer/i18n/pt_BR.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * scheduler_error_mailer -# +# # Translators: # OCA Transbot , 2016 msgid "" @@ -11,11 +11,12 @@ msgstr "" "POT-Creation-Date: 2016-08-06 02:49+0000\n" "PO-Revision-Date: 2016-08-06 02:49+0000\n" "Last-Translator: OCA Transbot , 2016\n" -"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: scheduler_error_mailer @@ -23,22 +24,28 @@ msgstr "" msgid "" "\n" " \n" -"
          \n" +"
          \n" "\n" -"

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

          \n" +"

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

          \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " +"get the error message from the context.'}\n" "\n" "\n" -"

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

          \n" +"

          You may check the logs of the Odoo server to get more information about " +"this failure.

          \n" "\n" "

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

          \n" "
            \n" "
          • Model : ${object.model or ''}
          • \n" "
          • Method : ${object.function or ''}
          • \n" "
          • Arguments : ${object.args or ''}
          • \n" -"
          • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
          • \n" +"
          • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" +"
          • \n" "
          • Number of calls : ${object.numbercall or '0'}
          • \n" "
          • Repeat missed : ${object.doall}
          • \n" "
          • User : ${object.user_id.name or ''}
          • \n" @@ -54,13 +61,39 @@ msgid "" " " msgstr "" +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids +msgid "Add Channels" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids +msgid "Add Followers" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id +#, fuzzy +msgid "Email Template" +msgstr "Modelo de Erro de E-mail" + #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Error E-mail Template" msgstr "Modelo de Erro de E-mail" +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "Scheduled Actions" +msgstr "" + #. module: scheduler_error_mailer #: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" "Selecione o modelo de email que será enviado quando o agendador falhar." @@ -71,12 +104,14 @@ msgstr "" msgid "Task failure with UID = %d." msgstr "Tarefa falhou com UID = %d." +#. module: scheduler_error_mailer +#: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server +#: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer +#: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer +msgid "Test Scheduler Error Mailer" +msgstr "" + #. module: scheduler_error_mailer #: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "[DB ${ctx.get('dbname')}] Agendador '${object.name or ''}' FALHOU" - -#. module: scheduler_error_mailer -#: model:ir.model,name:scheduler_error_mailer.model_ir_cron -msgid "ir.cron" -msgstr "" diff --git a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot new file mode 100644 index 000000000..1ba9cdbfc --- /dev/null +++ b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot @@ -0,0 +1,103 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * scheduler_error_mailer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \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:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer +msgid "\n" +" \n" +"
            \n" +"\n" +"

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

            \n" +"\n" +"\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"\n" +"\n" +"

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

            \n" +"\n" +"

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

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

            \n" +"--
            \n" +"Automatic e-mail sent by Odoo. Do not reply.
            \n" +"Database : ${ctx.get('dbname')}\n" +"

            \n" +"
            \n" +" \n" +" " +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids +msgid "Add Channels" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids +msgid "Add Followers" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id +msgid "Email Template" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id +msgid "Error E-mail Template" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "Scheduled Actions" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id +msgid "Select the email template that will be sent when this scheduler fails." +msgstr "" + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/models/ir_cron.py:55 +#, python-format +msgid "Task failure with UID = %d." +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server +#: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer +#: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer +msgid "Test Scheduler Error Mailer" +msgstr "" + +#. module: scheduler_error_mailer +#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer +msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" +msgstr "" + diff --git a/scheduler_error_mailer/i18n/sl.po b/scheduler_error_mailer/i18n/sl.po index cfe317484..bd9994cda 100644 --- a/scheduler_error_mailer/i18n/sl.po +++ b/scheduler_error_mailer/i18n/sl.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * scheduler_error_mailer -# +# # Translators: # OCA Transbot , 2016 msgid "" @@ -12,33 +12,40 @@ msgstr "" "PO-Revision-Date: 2016-08-06 02:49+0000\n" "Last-Translator: OCA Transbot , 2016\n" "Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" #. module: scheduler_error_mailer #: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer msgid "" "\n" " \n" -"
            \n" +"
            \n" "\n" -"

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

            \n" +"

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

            \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " +"get the error message from the context.'}\n" "\n" "\n" -"

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

            \n" +"

            You may check the logs of the Odoo server to get more information about " +"this failure.

            \n" "\n" "

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

            \n" "
              \n" "
            • Model : ${object.model or ''}
            • \n" "
            • Method : ${object.function or ''}
            • \n" "
            • Arguments : ${object.args or ''}
            • \n" -"
            • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
            • \n" +"
            • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" +"
            • \n" "
            • Number of calls : ${object.numbercall or '0'}
            • \n" "
            • Repeat missed : ${object.doall}
            • \n" "
            • User : ${object.user_id.name or ''}
            • \n" @@ -54,13 +61,39 @@ msgid "" " " msgstr "" +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids +msgid "Add Channels" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids +msgid "Add Followers" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id +#, fuzzy +msgid "Email Template" +msgstr "Predloga obvestila o napaki" + #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Error E-mail Template" msgstr "Predloga obvestila o napaki" +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "Scheduled Actions" +msgstr "" + #. module: scheduler_error_mailer #: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "Izberite predlogo za razpošiljanje ob napakah razporejevalca." @@ -70,13 +103,15 @@ msgstr "Izberite predlogo za razpošiljanje ob napakah razporejevalca." msgid "Task failure with UID = %d." msgstr "Napaka pri opravilu UID = %d." +#. module: scheduler_error_mailer +#: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server +#: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer +#: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer +msgid "Test Scheduler Error Mailer" +msgstr "" + #. module: scheduler_error_mailer #: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "" "[DB ${ctx.get('dbname')}] Razporejevalec '${object.name or ''}' NEUSPEŠEN" - -#. module: scheduler_error_mailer -#: model:ir.model,name:scheduler_error_mailer.model_ir_cron -msgid "ir.cron" -msgstr "" diff --git a/scheduler_error_mailer/i18n/zh_CN.po b/scheduler_error_mailer/i18n/zh_CN.po index 0d3711e24..4a074219c 100644 --- a/scheduler_error_mailer/i18n/zh_CN.po +++ b/scheduler_error_mailer/i18n/zh_CN.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * scheduler_error_mailer -# +# # Translators: # Jeffery Chenn , 2016 msgid "" @@ -11,11 +11,12 @@ msgstr "" "POT-Creation-Date: 2016-08-31 11:58+0000\n" "PO-Revision-Date: 2016-08-31 11:58+0000\n" "Last-Translator: Jeffery Chenn , 2016\n" -"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/zh_CN/)\n" +"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" +"zh_CN/)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #. module: scheduler_error_mailer @@ -23,22 +24,28 @@ msgstr "" msgid "" "\n" " \n" -"
              \n" +"
              \n" "\n" -"

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

              \n" +"

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

              \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " +"get the error message from the context.'}\n" "\n" "\n" -"

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

              \n" +"

              You may check the logs of the Odoo server to get more information about " +"this failure.

              \n" "\n" "

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

              \n" "
                \n" "
              • Model : ${object.model or ''}
              • \n" "
              • Method : ${object.function or ''}
              • \n" "
              • Arguments : ${object.args or ''}
              • \n" -"
              • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
              • \n" +"
              • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" +"
              • \n" "
              • Number of calls : ${object.numbercall or '0'}
              • \n" "
              • Repeat missed : ${object.doall}
              • \n" "
              • User : ${object.user_id.name or ''}
              • \n" @@ -54,13 +61,39 @@ msgid "" " " msgstr "" +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids +msgid "Add Channels" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids +msgid "Add Followers" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id +#, fuzzy +msgid "Email Template" +msgstr "错误E-mail 模板" + #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Error E-mail Template" msgstr "错误E-mail 模板" +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "Scheduled Actions" +msgstr "" + #. module: scheduler_error_mailer #: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" @@ -71,11 +104,13 @@ msgid "Task failure with UID = %d." msgstr "" #. module: scheduler_error_mailer -#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer -msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" +#: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server +#: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer +#: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer +msgid "Test Scheduler Error Mailer" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model,name:scheduler_error_mailer.model_ir_cron -msgid "ir.cron" +#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer +msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "" diff --git a/scheduler_error_mailer/models/__init__.py b/scheduler_error_mailer/models/__init__.py index 91c8e5e18..151e123d9 100644 --- a/scheduler_error_mailer/models/__init__.py +++ b/scheduler_error_mailer/models/__init__.py @@ -1,6 +1,6 @@ -# -*- coding: utf-8 -*- # © 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre # © 2016 Sodexis +# © 2018 bloopark systems () # 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 index efb2a4bed..9eedcfa23 100644 --- a/scheduler_error_mailer/models/ir_cron.py +++ b/scheduler_error_mailer/models/ir_cron.py @@ -1,9 +1,9 @@ -# -*- coding: utf-8 -*- # © 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre # © 2016 Sodexis +# © 2018 bloopark systems () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import models, fields, api, _ +from odoo import _, api, fields, models from odoo.exceptions import UserError import logging @@ -22,11 +22,12 @@ class IrCron(models.Model): ) @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) - + def _handle_callback_exception(self, cron_name, server_action_id, job_id, + job_exception): + res = super(IrCron, self)._handle_callback_exception(cron_name, + server_action_id, + job_id, + job_exception) my_cron = self.browse(job_id) if my_cron.email_template_id: @@ -49,7 +50,6 @@ class IrCron(models.Model): @api.model def _test_scheduler_failure(self): - """This function is used to test and debug this module""" - + """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 index 3ade1e1b8..a6ee1f9da 100644 --- a/scheduler_error_mailer/views/ir_cron.xml +++ b/scheduler_error_mailer/views/ir_cron.xml @@ -3,6 +3,7 @@ scheduler_error_mailer for Odoo Copyright (C) 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre Copyright (C) 2016 Sodexis + Copyright (C) 2018 bloopark systems () The licence is in the file __openerp__.py --> @@ -11,7 +12,7 @@ ir.cron.error.mailer.form ir.cron - + From 9a5cf1073cac490d3503c3be30e8bb1ada979f2b Mon Sep 17 00:00:00 2001 From: Cristina Martin Date: Mon, 4 Mar 2019 11:39:36 +0100 Subject: [PATCH 12/34] [12.0][MIG] scheduler_error_mailer: Migration to v12 [UPD] README.rst [UPD] Update scheduler_error_mailer.pot Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: server-tools-12.0/server-tools-12.0-scheduler_error_mailer Translate-URL: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-scheduler_error_mailer/ [UPD] README.rst --- scheduler_error_mailer/README.rst | 75 +-- scheduler_error_mailer/__init__.py | 2 - scheduler_error_mailer/__manifest__.py | 11 +- scheduler_error_mailer/i18n/de.po | 29 +- scheduler_error_mailer/i18n/es.po | 29 +- scheduler_error_mailer/i18n/hr.po | 24 +- scheduler_error_mailer/i18n/pt_BR.po | 29 +- .../i18n/scheduler_error_mailer.pot | 26 +- scheduler_error_mailer/i18n/sl.po | 29 +- scheduler_error_mailer/i18n/zh_CN.po | 29 +- scheduler_error_mailer/models/__init__.py | 3 - scheduler_error_mailer/models/ir_cron.py | 6 +- scheduler_error_mailer/readme/CONFIGURE.rst | 4 + .../readme/CONTRIBUTORS.rst | 9 + scheduler_error_mailer/readme/DESCRIPTION.rst | 2 + .../static/description/index.html | 438 ++++++++++++++++++ 16 files changed, 546 insertions(+), 199 deletions(-) create mode 100644 scheduler_error_mailer/readme/CONFIGURE.rst create mode 100644 scheduler_error_mailer/readme/CONTRIBUTORS.rst create mode 100644 scheduler_error_mailer/readme/DESCRIPTION.rst create mode 100644 scheduler_error_mailer/static/description/index.html diff --git a/scheduler_error_mailer/README.rst b/scheduler_error_mailer/README.rst index db7417404..b5dbb228a 100644 --- a/scheduler_error_mailer/README.rst +++ b/scheduler_error_mailer/README.rst @@ -1,14 +1,38 @@ -.. 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 file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/12.0/scheduler_error_mailer + :alt: OCA/server-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-scheduler_error_mailer + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/149/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + This module adds the possibility to send an e-mail when a scheduler raises an error. +**Table of contents** + +.. contents:: + :local: + Configuration ============= @@ -17,33 +41,27 @@ 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/11.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. +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 `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= -Images ------- +Authors +~~~~~~~ -* Odoo Community Association: `Icon `_. +* Akretion +* Sodexis Contributors ------------- +~~~~~~~~~~~~ * Sébastien BEAU * David Beal @@ -51,18 +69,23 @@ Contributors * Sodexis * Achraf Mhadhbi +* `Tecnativa `_: -Maintainer ----------- + * Cristina Martin R. + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. .. 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. +This module is part of the `OCA/server-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/scheduler_error_mailer/__init__.py b/scheduler_error_mailer/__init__.py index f55583a17..69f7babdf 100644 --- a/scheduler_error_mailer/__init__.py +++ b/scheduler_error_mailer/__init__.py @@ -1,5 +1,3 @@ -# © 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 models diff --git a/scheduler_error_mailer/__manifest__.py b/scheduler_error_mailer/__manifest__.py index 2954d0a8e..92e61ac59 100644 --- a/scheduler_error_mailer/__manifest__.py +++ b/scheduler_error_mailer/__manifest__.py @@ -1,15 +1,16 @@ -# © 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre -# © 2016 Sodexis -# © 2018 bloopark systems () +# Copyright 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre +# Copyright 2016 Sodexis +# Copyright 2018 bloopark systems () +# Copyright 2019 Tecnativa - Cristina Martin R. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'Scheduler Error Mailer', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'category': 'Extra Tools', 'license': 'AGPL-3', 'author': "Akretion,Sodexis,Odoo Community Association (OCA)", - 'website': 'http://www.akretion.com/', + 'website': 'https://github.com/OCA/server-tools', 'depends': ['mail'], 'data': [ 'data/ir_cron_email_tpl.xml', diff --git a/scheduler_error_mailer/i18n/de.po b/scheduler_error_mailer/i18n/de.po index cc4113013..62e2afddb 100644 --- a/scheduler_error_mailer/i18n/de.po +++ b/scheduler_error_mailer/i18n/de.po @@ -61,27 +61,7 @@ msgid "" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids -msgid "Add Channels" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids -msgid "Add Followers" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id -#, fuzzy -msgid "Email Template" -msgstr "Fehler e-Mail Vorlage" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Error E-mail Template" msgstr "Fehler e-Mail Vorlage" @@ -91,8 +71,7 @@ msgid "Scheduled Actions" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" "Wähle die e-Mail Vorlage welche bei einem Fehler dieses Schedulers gesendet " @@ -116,5 +95,9 @@ msgstr "" msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FEHLER" +#, fuzzy +#~ msgid "Email Template" +#~ msgstr "Fehler e-Mail Vorlage" + #~ msgid "ir.cron" #~ msgstr "ir.cron" diff --git a/scheduler_error_mailer/i18n/es.po b/scheduler_error_mailer/i18n/es.po index d283d8f4d..e920355fc 100644 --- a/scheduler_error_mailer/i18n/es.po +++ b/scheduler_error_mailer/i18n/es.po @@ -62,27 +62,7 @@ msgid "" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids -msgid "Add Channels" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids -msgid "Add Followers" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id -#, fuzzy -msgid "Email Template" -msgstr "Plantilla de correo electrónico de error" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Error E-mail Template" msgstr "Plantilla de correo electrónico de error" @@ -92,8 +72,7 @@ msgid "Scheduled Actions" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" "Seleccione la plantilla de correo electrónico que se enviará cuando falla " @@ -117,5 +96,9 @@ msgstr "" msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "" +#, fuzzy +#~ msgid "Email Template" +#~ msgstr "Plantilla de correo electrónico de error" + #~ msgid "ir.cron" #~ msgstr "ir.cron" diff --git a/scheduler_error_mailer/i18n/hr.po b/scheduler_error_mailer/i18n/hr.po index 3641fe18d..6d2977391 100644 --- a/scheduler_error_mailer/i18n/hr.po +++ b/scheduler_error_mailer/i18n/hr.po @@ -62,26 +62,7 @@ msgid "" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids -msgid "Add Channels" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids -msgid "Add Followers" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id -msgid "Email Template" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Error E-mail Template" msgstr "" @@ -91,8 +72,7 @@ msgid "Scheduled Actions" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" diff --git a/scheduler_error_mailer/i18n/pt_BR.po b/scheduler_error_mailer/i18n/pt_BR.po index 6f91016b9..226966388 100644 --- a/scheduler_error_mailer/i18n/pt_BR.po +++ b/scheduler_error_mailer/i18n/pt_BR.po @@ -62,27 +62,7 @@ msgid "" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids -msgid "Add Channels" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids -msgid "Add Followers" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id -#, fuzzy -msgid "Email Template" -msgstr "Modelo de Erro de E-mail" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Error E-mail Template" msgstr "Modelo de Erro de E-mail" @@ -92,8 +72,7 @@ msgid "Scheduled Actions" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" "Selecione o modelo de email que será enviado quando o agendador falhar." @@ -115,3 +94,7 @@ msgstr "" #: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "[DB ${ctx.get('dbname')}] Agendador '${object.name or ''}' FALHOU" + +#, fuzzy +#~ msgid "Email Template" +#~ msgstr "Modelo de Erro de E-mail" diff --git a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot index 1ba9cdbfc..72fd51ff7 100644 --- a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot +++ b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -49,26 +49,7 @@ msgid "\n" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids -msgid "Add Channels" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids -msgid "Add Followers" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id -msgid "Email Template" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Error E-mail Template" msgstr "" @@ -78,8 +59,7 @@ msgid "Scheduled Actions" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" diff --git a/scheduler_error_mailer/i18n/sl.po b/scheduler_error_mailer/i18n/sl.po index bd9994cda..96b252f6b 100644 --- a/scheduler_error_mailer/i18n/sl.po +++ b/scheduler_error_mailer/i18n/sl.po @@ -62,27 +62,7 @@ msgid "" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids -msgid "Add Channels" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids -msgid "Add Followers" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id -#, fuzzy -msgid "Email Template" -msgstr "Predloga obvestila o napaki" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Error E-mail Template" msgstr "Predloga obvestila o napaki" @@ -92,8 +72,7 @@ msgid "Scheduled Actions" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "Izberite predlogo za razpošiljanje ob napakah razporejevalca." @@ -115,3 +94,7 @@ msgstr "" msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "" "[DB ${ctx.get('dbname')}] Razporejevalec '${object.name or ''}' NEUSPEŠEN" + +#, fuzzy +#~ msgid "Email Template" +#~ msgstr "Predloga obvestila o napaki" diff --git a/scheduler_error_mailer/i18n/zh_CN.po b/scheduler_error_mailer/i18n/zh_CN.po index 4a074219c..053e325d1 100644 --- a/scheduler_error_mailer/i18n/zh_CN.po +++ b/scheduler_error_mailer/i18n/zh_CN.po @@ -62,27 +62,7 @@ msgid "" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_channel_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_channel_ids -msgid "Add Channels" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_partner_ids -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_partner_ids -msgid "Add Followers" -msgstr "" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_template_id -#, fuzzy -msgid "Email Template" -msgstr "错误E-mail 模板" - -#. module: scheduler_error_mailer -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,field_description:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Error E-mail Template" msgstr "错误E-mail 模板" @@ -92,8 +72,7 @@ msgid "Scheduled Actions" msgstr "" #. module: scheduler_error_mailer -#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron_email_template_id -#: model:ir.model.fields,help:scheduler_error_mailer.field_nsca_check_email_template_id +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" @@ -114,3 +93,7 @@ msgstr "" #: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "" + +#, fuzzy +#~ msgid "Email Template" +#~ msgstr "错误E-mail 模板" diff --git a/scheduler_error_mailer/models/__init__.py b/scheduler_error_mailer/models/__init__.py index 151e123d9..b365c0e97 100644 --- a/scheduler_error_mailer/models/__init__.py +++ b/scheduler_error_mailer/models/__init__.py @@ -1,6 +1,3 @@ -# © 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre -# © 2016 Sodexis -# © 2018 bloopark systems () # 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 index 9eedcfa23..2bce89dd4 100644 --- a/scheduler_error_mailer/models/ir_cron.py +++ b/scheduler_error_mailer/models/ir_cron.py @@ -1,6 +1,6 @@ -# © 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre -# © 2016 Sodexis -# © 2018 bloopark systems () +# Copyright 2012-2013 Akretion Sébastien BEAU,David Beal,Alexis de Lattre +# Copyright 2016 Sodexis +# Copyright 2018 bloopark systems () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import _, api, fields, models diff --git a/scheduler_error_mailer/readme/CONFIGURE.rst b/scheduler_error_mailer/readme/CONFIGURE.rst new file mode 100644 index 000000000..baf4c1a6d --- /dev/null +++ b/scheduler_error_mailer/readme/CONFIGURE.rst @@ -0,0 +1,4 @@ +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. diff --git a/scheduler_error_mailer/readme/CONTRIBUTORS.rst b/scheduler_error_mailer/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..496cedb9f --- /dev/null +++ b/scheduler_error_mailer/readme/CONTRIBUTORS.rst @@ -0,0 +1,9 @@ +* Sébastien BEAU +* David Beal +* Alexis de Lattre +* Sodexis +* Achraf Mhadhbi + +* `Tecnativa `_: + + * Cristina Martin R. diff --git a/scheduler_error_mailer/readme/DESCRIPTION.rst b/scheduler_error_mailer/readme/DESCRIPTION.rst new file mode 100644 index 000000000..6e097d81f --- /dev/null +++ b/scheduler_error_mailer/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module adds the possibility to send an e-mail when a scheduler raises +an error. diff --git a/scheduler_error_mailer/static/description/index.html b/scheduler_error_mailer/static/description/index.html new file mode 100644 index 000000000..2586581cf --- /dev/null +++ b/scheduler_error_mailer/static/description/index.html @@ -0,0 +1,438 @@ + + + + + + +Scheduler Error Mailer + + + +
                +

                Scheduler Error Mailer

                + + +

                Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runbot

                +

                This module adds the possibility to send an e-mail when a scheduler raises +an error.

                +

                Table of contents

                + +
                +

                Configuration

                +

                To configure this module, you need to:

                +
                  +
                1. Go to Settings -> Technical -> Automation -> Scheduled Actions
                2. +
                3. Choose the scheduled Actions you want to send the error email and select the E-mail Template in the Error E-mail Template field.
                4. +
                +
                +
                +

                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.

                +

                Do not contact contributors directly about support or help with technical issues.

                +
                +
                +

                Credits

                +
                +

                Authors

                +
                  +
                • Akretion
                • +
                • Sodexis
                • +
                +
                +
                +

                Contributors

                + +
                +
                +

                Maintainers

                +

                This module is maintained by the OCA.

                +Odoo Community Association +

                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.

                +

                This module is part of the OCA/server-tools project on GitHub.

                +

                You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

                +
                +
                +
                + + From 48ae99f9ac0ec2eec48ac77e9579c8133513f98e Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Wed, 14 Aug 2019 10:30:07 +0000 Subject: [PATCH 13/34] Added translation using Weblate (Portuguese) --- scheduler_error_mailer/i18n/pt.po | 83 +++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 scheduler_error_mailer/i18n/pt.po diff --git a/scheduler_error_mailer/i18n/pt.po b/scheduler_error_mailer/i18n/pt.po new file mode 100644 index 000000000..b1262957d --- /dev/null +++ b/scheduler_error_mailer/i18n/pt.po @@ -0,0 +1,83 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * scheduler_error_mailer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" + +#. module: scheduler_error_mailer +#: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer +msgid "\n" +" \n" +"
                \n" +"\n" +"

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

                \n" +"\n" +"\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"\n" +"\n" +"

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

                \n" +"\n" +"

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

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

                \n" +"--
                \n" +"Automatic e-mail sent by Odoo. Do not reply.
                \n" +"Database : ${ctx.get('dbname')}\n" +"

                \n" +"
                \n" +" \n" +" " +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id +msgid "Error E-mail Template" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "Scheduled Actions" +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id +msgid "Select the email template that will be sent when this scheduler fails." +msgstr "" + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/models/ir_cron.py:55 +#, python-format +msgid "Task failure with UID = %d." +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server +#: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer +#: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer +msgid "Test Scheduler Error Mailer" +msgstr "" + +#. module: scheduler_error_mailer +#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer +msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" +msgstr "" From 0e0821e527f5ea5c8d2f72fac549564e79e91e4b Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Wed, 14 Aug 2019 10:30:59 +0000 Subject: [PATCH 14/34] Translated using Weblate (Portuguese) Currently translated at 71.4% (5 of 7 strings) Translation: server-tools-12.0/server-tools-12.0-scheduler_error_mailer Translate-URL: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-scheduler_error_mailer/pt/ --- scheduler_error_mailer/i18n/pt.po | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/scheduler_error_mailer/i18n/pt.po b/scheduler_error_mailer/i18n/pt.po index b1262957d..5a4f479c7 100644 --- a/scheduler_error_mailer/i18n/pt.po +++ b/scheduler_error_mailer/i18n/pt.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2019-08-14 12:44+0000\n" +"Last-Translator: Pedro Castro Silva \n" "Language-Team: none\n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.7.1\n" #. module: scheduler_error_mailer #: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer @@ -52,30 +54,31 @@ msgstr "" #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Error E-mail Template" -msgstr "" +msgstr "Modelo do E-mail de Erro" #. module: scheduler_error_mailer #: model:ir.model,name:scheduler_error_mailer.model_ir_cron msgid "Scheduled Actions" -msgstr "" +msgstr "Ações Agendadas" #. module: scheduler_error_mailer #: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Select the email template that will be sent when this scheduler fails." msgstr "" +"Selecione o modelo de email que será enviado quando este agendador falhar." #. module: scheduler_error_mailer #: code:addons/scheduler_error_mailer/models/ir_cron.py:55 #, python-format msgid "Task failure with UID = %d." -msgstr "" +msgstr "Falha na tarefa com UID = %d." #. module: scheduler_error_mailer #: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server #: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer #: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer msgid "Test Scheduler Error Mailer" -msgstr "" +msgstr "Testar o Envio de E-mails de Erro do Agendador" #. module: scheduler_error_mailer #: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer From aba073b16bce62a523ffe6638b66e0f19e03be02 Mon Sep 17 00:00:00 2001 From: Rodrigo Macedo Date: Fri, 30 Aug 2019 14:53:48 +0000 Subject: [PATCH 15/34] Translated using Weblate (Portuguese (Brazil)) Currently translated at 85.7% (6 of 7 strings) Translation: server-tools-12.0/server-tools-12.0-scheduler_error_mailer Translate-URL: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-scheduler_error_mailer/pt_BR/ --- scheduler_error_mailer/i18n/pt_BR.po | 50 ++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/scheduler_error_mailer/i18n/pt_BR.po b/scheduler_error_mailer/i18n/pt_BR.po index 226966388..f380fb14f 100644 --- a/scheduler_error_mailer/i18n/pt_BR.po +++ b/scheduler_error_mailer/i18n/pt_BR.po @@ -9,15 +9,16 @@ msgstr "" "Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-08-06 02:49+0000\n" -"PO-Revision-Date: 2016-08-06 02:49+0000\n" -"Last-Translator: OCA Transbot , 2016\n" -"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" -"teams/23907/pt_BR/)\n" +"PO-Revision-Date: 2019-08-30 17:04+0000\n" +"Last-Translator: Rodrigo Macedo \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/" +"23907/pt_BR/)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.8\n" #. module: scheduler_error_mailer #: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer @@ -60,6 +61,43 @@ msgid "" " \n" " " msgstr "" +"\n" +" \n" +"
                \n" +"\n" +"

                Odoo tentou executar o agendador${object.name ou ''}no banco de " +"dados${ctx.get ('dbname')}, mas falhou. Aqui está a mensagem de " +"erro:

                \n" +"\n" +"\n" +"${ctx.get ('job_exception') e ctx.get ('job_exception'). value ou 'Falha ao " +"obter a mensagem de erro do contexto.'}\n" +"\n" +"\n" +"

                Você pode verificar os logs do servidor Odoo para obter mais informações " +"sobre esta falha.

                \n" +"\n" +"

                Propriedades do planejador${object.name ou''}:

                \n" +"
                  \n" +"
                • Modelo: ${object.model ou ''}
                • \n" +"
                • Método: ${object.function ou ''}
                • \n" +"
                • Argumentos: ${object.args ou ''}
                • \n" +"
                • Intervalo: ${object.interval_number ou '0'} ${object.interval_type ou " +"''}
                • \n" +"
                • Número de chamadas: ${object.numbercall ou '0'}
                • \n" +"
                • Repetição perdida: ${object.doall}
                • \n" +"
                • Usuário: ${object.user_id.name ou ''}
                • \n" +"
                \n" +"\n" +"

                \n" +"--
                \n" +"Email automático enviado pelo Odoo. Não responda.
                \n" +"Banco de Dados: ${ctx.get ('dbname')}\n" +"

                \n" +"
                \n" +" \n" +" " #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id @@ -69,7 +107,7 @@ msgstr "Modelo de Erro de E-mail" #. module: scheduler_error_mailer #: model:ir.model,name:scheduler_error_mailer.model_ir_cron msgid "Scheduled Actions" -msgstr "" +msgstr "Ações Agendadas" #. module: scheduler_error_mailer #: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id From 896304d99fbd00896d12f628b76c37ed01d52a20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E4=BC=9F=E6=9D=B0?= <674416404@qq.com> Date: Sat, 31 Aug 2019 05:58:55 +0000 Subject: [PATCH 16/34] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (7 of 7 strings) Translation: server-tools-12.0/server-tools-12.0-scheduler_error_mailer Translate-URL: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-scheduler_error_mailer/zh_CN/ --- scheduler_error_mailer/i18n/zh_CN.po | 49 ++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/scheduler_error_mailer/i18n/zh_CN.po b/scheduler_error_mailer/i18n/zh_CN.po index 053e325d1..5335ed154 100644 --- a/scheduler_error_mailer/i18n/zh_CN.po +++ b/scheduler_error_mailer/i18n/zh_CN.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-08-31 11:58+0000\n" -"PO-Revision-Date: 2016-08-31 11:58+0000\n" -"Last-Translator: Jeffery Chenn , 2016\n" +"PO-Revision-Date: 2019-08-31 06:18+0000\n" +"Last-Translator: 黎伟杰 <674416404@qq.com>\n" "Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/" "zh_CN/)\n" "Language: zh_CN\n" @@ -18,6 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.8\n" #. module: scheduler_error_mailer #: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer @@ -60,6 +61,40 @@ msgid "" " \n" " " msgstr "" +"\n" +" \n" +"
                \n" +"\n" +"

                Odoo试图运行调度程序 ${object.name or ''} 在数据库中 " +"${ctx.get('dbname')} 但它失败了。这是错误消息 :

                \n" +"\n" +"\n" +"${ctx.get('job_exception') and ctx.get('job_exception').value or " +"'无法从上下文中获取错误消息.'}\n" +"\n" +"\n" +"

                您可以检查Odoo服务器的日志以获取有关此故障的更多信息.

                \n" +"\n" +"

                调度程序的属性 ${object.name or ''} :

                \n" +"
                  \n" +"
                • 模型: ${object.model or ''}
                • \n" +"
                • 方法 : ${object.function or ''}
                • \n" +"
                • 参数: ${object.args or ''}
                • \n" +"
                • 间隔: ${object.interval_number or '0'} ${object.interval_type or ''}
                • \n" +"
                • 通话次数: ${object.numbercall or '0'}
                • \n" +"
                • 重复错过了: ${object.doall}
                • \n" +"
                • 用户: ${object.user_id.name or ''}
                • \n" +"
                \n" +"\n" +"

                \n" +"--
                \n" +"Odoo发送的自动电子邮件。请勿回复。
                \n" +"数据库: ${ctx.get('dbname')}\n" +"

                \n" +"
                \n" +" \n" +" " #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id @@ -69,30 +104,30 @@ msgstr "错误E-mail 模板" #. module: scheduler_error_mailer #: model:ir.model,name:scheduler_error_mailer.model_ir_cron msgid "Scheduled Actions" -msgstr "" +msgstr "安排的动作" #. module: scheduler_error_mailer #: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id msgid "Select the email template that will be sent when this scheduler fails." -msgstr "" +msgstr "选择此调度程序失败时将发送的电子邮件模板。" #. module: scheduler_error_mailer #: code:addons/scheduler_error_mailer/models/ir_cron.py:55 #, python-format msgid "Task failure with UID = %d." -msgstr "" +msgstr "任务失败 UID = %d." #. module: scheduler_error_mailer #: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server #: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer #: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer msgid "Test Scheduler Error Mailer" -msgstr "" +msgstr "测试调度程序错误邮件程序" #. module: scheduler_error_mailer #: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" -msgstr "" +msgstr "[DB ${ctx.get('dbname')}] 调度'${object.name or ''}' 失败" #, fuzzy #~ msgid "Email Template" From 1e9339801736394ea623872a3ac68628a74eff64 Mon Sep 17 00:00:00 2001 From: Rodrigo Macedo Date: Mon, 2 Sep 2019 22:48:51 +0000 Subject: [PATCH 17/34] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (7 of 7 strings) Translation: server-tools-12.0/server-tools-12.0-scheduler_error_mailer Translate-URL: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-scheduler_error_mailer/pt_BR/ --- scheduler_error_mailer/i18n/pt_BR.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scheduler_error_mailer/i18n/pt_BR.po b/scheduler_error_mailer/i18n/pt_BR.po index f380fb14f..96858c42d 100644 --- a/scheduler_error_mailer/i18n/pt_BR.po +++ b/scheduler_error_mailer/i18n/pt_BR.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-08-06 02:49+0000\n" -"PO-Revision-Date: 2019-08-30 17:04+0000\n" +"PO-Revision-Date: 2019-09-03 01:23+0000\n" "Last-Translator: Rodrigo Macedo \n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/" "23907/pt_BR/)\n" @@ -126,7 +126,7 @@ msgstr "Tarefa falhou com UID = %d." #: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer #: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer msgid "Test Scheduler Error Mailer" -msgstr "" +msgstr "Teste Agendado de Erro do Remetente" #. module: scheduler_error_mailer #: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer From 624c7b2f39a9a1ec6c745890097bdd8bb79a27bd Mon Sep 17 00:00:00 2001 From: Yann Papouin Date: Wed, 20 Oct 2021 11:04:28 +0000 Subject: [PATCH 18/34] Added translation using Weblate (French) --- scheduler_error_mailer/__manifest__.py | 2 +- .../data/ir_cron_email_tpl.xml | 2 +- scheduler_error_mailer/i18n/de.po | 4 +- scheduler_error_mailer/i18n/es.po | 4 +- scheduler_error_mailer/i18n/fr.po | 173 ++++++++++++++++++ scheduler_error_mailer/i18n/hr.po | 4 +- scheduler_error_mailer/i18n/pt.po | 23 ++- scheduler_error_mailer/i18n/pt_BR.po | 124 ++++++++----- .../i18n/scheduler_error_mailer.pot | 2 +- scheduler_error_mailer/i18n/sl.po | 4 +- scheduler_error_mailer/i18n/zh_CN.po | 115 ++++++++---- .../migrations/12.0.1.1.0/post-migration.py | 13 ++ scheduler_error_mailer/models/ir_cron.py | 2 +- 13 files changed, 375 insertions(+), 97 deletions(-) create mode 100644 scheduler_error_mailer/i18n/fr.po create mode 100644 scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py diff --git a/scheduler_error_mailer/__manifest__.py b/scheduler_error_mailer/__manifest__.py index 92e61ac59..1ddd01b19 100644 --- a/scheduler_error_mailer/__manifest__.py +++ b/scheduler_error_mailer/__manifest__.py @@ -6,7 +6,7 @@ { 'name': 'Scheduler Error Mailer', - 'version': '12.0.1.0.0', + 'version': '12.0.1.1.0', 'category': 'Extra Tools', 'license': 'AGPL-3', 'author': "Akretion,Sodexis,Odoo Community Association (OCA)", diff --git a/scheduler_error_mailer/data/ir_cron_email_tpl.xml b/scheduler_error_mailer/data/ir_cron_email_tpl.xml index a6696e59f..14563fba6 100644 --- a/scheduler_error_mailer/data/ir_cron_email_tpl.xml +++ b/scheduler_error_mailer/data/ir_cron_email_tpl.xml @@ -18,7 +18,7 @@

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

                -${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'} +${ctx.get('job_exception') or 'Failed to get the error message from the context.'}

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

                diff --git a/scheduler_error_mailer/i18n/de.po b/scheduler_error_mailer/i18n/de.po index 62e2afddb..444f2a1d1 100644 --- a/scheduler_error_mailer/i18n/de.po +++ b/scheduler_error_mailer/i18n/de.po @@ -31,8 +31,8 @@ msgid "" "message :

                \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " -"get the error message from the context.'}\n" +"${ctx.get('job_exception') or 'Failed to get the error message from the " +"context.'}\n" "\n" "\n" "

                You may check the logs of the Odoo server to get more information about " diff --git a/scheduler_error_mailer/i18n/es.po b/scheduler_error_mailer/i18n/es.po index e920355fc..162536d5e 100644 --- a/scheduler_error_mailer/i18n/es.po +++ b/scheduler_error_mailer/i18n/es.po @@ -32,8 +32,8 @@ msgid "" "message :

                \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " -"get the error message from the context.'}\n" +"${ctx.get('job_exception') or 'Failed to get the error message from the " +"context.'}\n" "\n" "\n" "

                You may check the logs of the Odoo server to get more information about " diff --git a/scheduler_error_mailer/i18n/fr.po b/scheduler_error_mailer/i18n/fr.po new file mode 100644 index 000000000..ad43b27f3 --- /dev/null +++ b/scheduler_error_mailer/i18n/fr.po @@ -0,0 +1,173 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * scheduler_error_mailer +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-10-20 11:12+0000\n" +"Last-Translator: Yann Papouin \n" +"Language-Team: none\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: scheduler_error_mailer +#: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer +msgid "" +"\n" +" \n" +"

                \n" +"\n" +"

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

                \n" +"\n" +"\n" +"${ctx.get('job_exception') or 'Failed to get the error message from the " +"context.'}\n" +"\n" +"\n" +"

                You may check the logs of the Odoo server to get more information about " +"this failure.

                \n" +"\n" +"

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

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

                \n" +"--
                \n" +"Automatic e-mail sent by Odoo. Do not reply.
                \n" +"Database : ${ctx.get('dbname')}\n" +"

                \n" +"
                \n" +" \n" +" " +msgstr "" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id +msgid "Error E-mail Template" +msgstr "Modèle d’e-mail d’erreur" + +#. module: scheduler_error_mailer +#: model:ir.model,name:scheduler_error_mailer.model_ir_cron +msgid "Scheduled Actions" +msgstr "Actions planifiées" + +#. module: scheduler_error_mailer +#: model:ir.model.fields,help:scheduler_error_mailer.field_ir_cron__email_template_id +msgid "Select the email template that will be sent when this scheduler fails." +msgstr "" +"Sélectionnez le modèle d’e-mail qui sera envoyé en cas d’échec de ce " +"planificateur." + +#. module: scheduler_error_mailer +#: code:addons/scheduler_error_mailer/models/ir_cron.py:55 +#, python-format +msgid "Task failure with UID = %d." +msgstr "Échec de la tâche avec UID = %d." + +#. module: scheduler_error_mailer +#: model:ir.actions.server,name:scheduler_error_mailer.test_scheduler_error_mailer_ir_actions_server +#: model:ir.cron,cron_name:scheduler_error_mailer.test_scheduler_error_mailer +#: model:ir.cron,name:scheduler_error_mailer.test_scheduler_error_mailer +msgid "Test Scheduler Error Mailer" +msgstr "Test du mailer d’erreur du planificateur" + +#. module: scheduler_error_mailer +#: model:mail.template,subject:scheduler_error_mailer.scheduler_error_mailer +msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" +msgstr "[DB ${ctx.get('dbname')}] Planificateur '${object.name or ''}' ECHEC" + +#~ msgid "" +#~ "\n" +#~ " \n" +#~ "
                \n" +#~ "\n" +#~ "

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

                \n" +#~ "\n" +#~ "\n" +#~ "${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed " +#~ "to get the error message from the context.'}\n" +#~ "\n" +#~ "\n" +#~ "

                You may check the logs of the Odoo server to get more information " +#~ "about this failure.

                \n" +#~ "\n" +#~ "

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

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

                \n" +#~ "--
                \n" +#~ "Automatic e-mail sent by Odoo. Do not reply.
                \n" +#~ "Database : ${ctx.get('dbname')}\n" +#~ "

                \n" +#~ "
                \n" +#~ " \n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " \n" +#~ "
                \n" +#~ "\n" +#~ "

                Odoo a essayé d’exécuter le planificateur ${object.name ou ''} dans la base de données ${ctx.get('dbname')} mais cela a " +#~ "échoué. Voici le message d’erreur :

                \n" +#~ "\n" +#~ "\n" +#~ "${ctx.get('job_exception') et ctx.get('job_exception').value ou " +#~ "'Impossible d’obtenir le message d’erreur du contexte.'}\n" +#~ "\n" +#~ "\n" +#~ "

                Vous pouvez consulter les journaux du serveur Odoo pour obtenir plus " +#~ "d’informations sur cette défaillance.

                \n" +#~ "\n" +#~ "

                Propriétés du planificateur ${object.name ou ''} :

                \n" +#~ "
                  \n" +#~ "
                • Modèle : ${object.model ou ''}
                • \n" +#~ "
                • Méthode : ${object.function ou ''}
                • \n" +#~ "
                • Arguments : ${object.args ou ''}
                • \n" +#~ "
                • Intervalle : ${object.interval_number ou '0'} ${object.interval_type " +#~ "ou ''}
                • \n" +#~ "
                • Nombre d’appels : ${object.numbercall ou '0'}
                • \n" +#~ "
                • Recommencer les manqués : ${object.doall}
                • \n" +#~ "
                • Utilisateur : ${object.user_id.name ou ''}
                • \n" +#~ "
                \n" +#~ "\n" +#~ "

                \n" +#~ "--
                \n" +#~ "E-mail automatique envoyé par Odoo. Ne pas répondre.
                \n" +#~ "Base de données : ${ctx.get('dbname')}\n" +#~ "

                \n" +#~ "
                \n" +#~ " \n" +#~ " " diff --git a/scheduler_error_mailer/i18n/hr.po b/scheduler_error_mailer/i18n/hr.po index 6d2977391..d3bfaeceb 100644 --- a/scheduler_error_mailer/i18n/hr.po +++ b/scheduler_error_mailer/i18n/hr.po @@ -32,8 +32,8 @@ msgid "" "message :

                \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " -"get the error message from the context.'}\n" +"${ctx.get('job_exception') or 'Failed to get the error message from the " +"context.'}\n" "\n" "\n" "

                You may check the logs of the Odoo server to get more information about " diff --git a/scheduler_error_mailer/i18n/pt.po b/scheduler_error_mailer/i18n/pt.po index 5a4f479c7..f946200c9 100644 --- a/scheduler_error_mailer/i18n/pt.po +++ b/scheduler_error_mailer/i18n/pt.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * scheduler_error_mailer +# * scheduler_error_mailer # msgid "" msgstr "" @@ -18,24 +18,31 @@ msgstr "" #. module: scheduler_error_mailer #: model:mail.template,body_html:scheduler_error_mailer.scheduler_error_mailer -msgid "\n" -" \n" -"

                \n" +msgid "" "\n" -"

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

                \n" +" \n" +"
                \n" +"\n" +"

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

                \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"${ctx.get('job_exception') or 'Failed to get the error message from the " +"context.'}\n" "\n" "\n" -"

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

                \n" +"

                You may check the logs of the Odoo server to get more information about " +"this failure.

                \n" "\n" "

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

                \n" "
                  \n" "
                • Model : ${object.model or ''}
                • \n" "
                • Method : ${object.function or ''}
                • \n" "
                • Arguments : ${object.args or ''}
                • \n" -"
                • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
                • \n" +"
                • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" +"
                • \n" "
                • Number of calls : ${object.numbercall or '0'}
                • \n" "
                • Repeat missed : ${object.doall}
                • \n" "
                • User : ${object.user_id.name or ''}
                • \n" diff --git a/scheduler_error_mailer/i18n/pt_BR.po b/scheduler_error_mailer/i18n/pt_BR.po index 96858c42d..6ecf740aa 100644 --- a/scheduler_error_mailer/i18n/pt_BR.po +++ b/scheduler_error_mailer/i18n/pt_BR.po @@ -11,8 +11,8 @@ msgstr "" "POT-Creation-Date: 2016-08-06 02:49+0000\n" "PO-Revision-Date: 2019-09-03 01:23+0000\n" "Last-Translator: Rodrigo Macedo \n" -"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/" -"23907/pt_BR/)\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/pt_BR/)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,8 +33,8 @@ msgid "" "message :

                  \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " -"get the error message from the context.'}\n" +"${ctx.get('job_exception') or 'Failed to get the error message from the " +"context.'}\n" "\n" "\n" "

                  You may check the logs of the Odoo server to get more information about " @@ -61,43 +61,6 @@ msgid "" " \n" " " msgstr "" -"\n" -" \n" -"

                  \n" -"\n" -"

                  Odoo tentou executar o agendador${object.name ou ''}no banco de " -"dados${ctx.get ('dbname')}, mas falhou. Aqui está a mensagem de " -"erro:

                  \n" -"\n" -"\n" -"${ctx.get ('job_exception') e ctx.get ('job_exception'). value ou 'Falha ao " -"obter a mensagem de erro do contexto.'}\n" -"\n" -"\n" -"

                  Você pode verificar os logs do servidor Odoo para obter mais informações " -"sobre esta falha.

                  \n" -"\n" -"

                  Propriedades do planejador${object.name ou''}:

                  \n" -"
                    \n" -"
                  • Modelo: ${object.model ou ''}
                  • \n" -"
                  • Método: ${object.function ou ''}
                  • \n" -"
                  • Argumentos: ${object.args ou ''}
                  • \n" -"
                  • Intervalo: ${object.interval_number ou '0'} ${object.interval_type ou " -"''}
                  • \n" -"
                  • Número de chamadas: ${object.numbercall ou '0'}
                  • \n" -"
                  • Repetição perdida: ${object.doall}
                  • \n" -"
                  • Usuário: ${object.user_id.name ou ''}
                  • \n" -"
                  \n" -"\n" -"

                  \n" -"--
                  \n" -"Email automático enviado pelo Odoo. Não responda.
                  \n" -"Banco de Dados: ${ctx.get ('dbname')}\n" -"

                  \n" -"
                  \n" -" \n" -" " #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id @@ -133,6 +96,85 @@ msgstr "Teste Agendado de Erro do Remetente" msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "[DB ${ctx.get('dbname')}] Agendador '${object.name or ''}' FALHOU" +#~ msgid "" +#~ "\n" +#~ " \n" +#~ "
                  \n" +#~ "\n" +#~ "

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

                  \n" +#~ "\n" +#~ "\n" +#~ "${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed " +#~ "to get the error message from the context.'}\n" +#~ "\n" +#~ "\n" +#~ "

                  You may check the logs of the Odoo server to get more information " +#~ "about this failure.

                  \n" +#~ "\n" +#~ "

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

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

                  \n" +#~ "--
                  \n" +#~ "Automatic e-mail sent by Odoo. Do not reply.
                  \n" +#~ "Database : ${ctx.get('dbname')}\n" +#~ "

                  \n" +#~ "
                  \n" +#~ " \n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " \n" +#~ "
                  \n" +#~ "\n" +#~ "

                  Odoo tentou executar o agendador${object.name ou ''}no banco " +#~ "de dados${ctx.get ('dbname')}, mas falhou. Aqui está a mensagem " +#~ "de erro:

                  \n" +#~ "\n" +#~ "\n" +#~ "${ctx.get ('job_exception') e ctx.get ('job_exception'). value ou 'Falha " +#~ "ao obter a mensagem de erro do contexto.'}\n" +#~ "\n" +#~ "\n" +#~ "

                  Você pode verificar os logs do servidor Odoo para obter mais " +#~ "informações sobre esta falha.

                  \n" +#~ "\n" +#~ "

                  Propriedades do planejador${object.name ou''}:

                  \n" +#~ "
                    \n" +#~ "
                  • Modelo: ${object.model ou ''}
                  • \n" +#~ "
                  • Método: ${object.function ou ''}
                  • \n" +#~ "
                  • Argumentos: ${object.args ou ''}
                  • \n" +#~ "
                  • Intervalo: ${object.interval_number ou '0'} ${object.interval_type " +#~ "ou ''}
                  • \n" +#~ "
                  • Número de chamadas: ${object.numbercall ou '0'}
                  • \n" +#~ "
                  • Repetição perdida: ${object.doall}
                  • \n" +#~ "
                  • Usuário: ${object.user_id.name ou ''}
                  • \n" +#~ "
                  \n" +#~ "\n" +#~ "

                  \n" +#~ "--
                  \n" +#~ "Email automático enviado pelo Odoo. Não responda.
                  \n" +#~ "Banco de Dados: ${ctx.get ('dbname')}\n" +#~ "

                  \n" +#~ "
                  \n" +#~ " \n" +#~ " " + #, fuzzy #~ msgid "Email Template" #~ msgstr "Modelo de Erro de E-mail" diff --git a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot index 72fd51ff7..9b3ae95d1 100644 --- a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot +++ b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot @@ -22,7 +22,7 @@ msgid "\n" "

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

                  \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to get the error message from the context.'}\n" +"${ctx.get('job_exception') or 'Failed to get the error message from the context.'}\n" "\n" "\n" "

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

                  \n" diff --git a/scheduler_error_mailer/i18n/sl.po b/scheduler_error_mailer/i18n/sl.po index 96b252f6b..b53fdd937 100644 --- a/scheduler_error_mailer/i18n/sl.po +++ b/scheduler_error_mailer/i18n/sl.po @@ -32,8 +32,8 @@ msgid "" "message :

                  \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " -"get the error message from the context.'}\n" +"${ctx.get('job_exception') or 'Failed to get the error message from the " +"context.'}\n" "\n" "\n" "

                  You may check the logs of the Odoo server to get more information about " diff --git a/scheduler_error_mailer/i18n/zh_CN.po b/scheduler_error_mailer/i18n/zh_CN.po index 5335ed154..024e63f3f 100644 --- a/scheduler_error_mailer/i18n/zh_CN.po +++ b/scheduler_error_mailer/i18n/zh_CN.po @@ -33,8 +33,8 @@ msgid "" "message :

                  \n" "\n" "\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed to " -"get the error message from the context.'}\n" +"${ctx.get('job_exception') or 'Failed to get the error message from the " +"context.'}\n" "\n" "\n" "

                  You may check the logs of the Odoo server to get more information about " @@ -61,40 +61,6 @@ msgid "" " \n" " " msgstr "" -"\n" -" \n" -"

                  \n" -"\n" -"

                  Odoo试图运行调度程序 ${object.name or ''} 在数据库中 " -"${ctx.get('dbname')} 但它失败了。这是错误消息 :

                  \n" -"\n" -"\n" -"${ctx.get('job_exception') and ctx.get('job_exception').value or " -"'无法从上下文中获取错误消息.'}\n" -"\n" -"\n" -"

                  您可以检查Odoo服务器的日志以获取有关此故障的更多信息.

                  \n" -"\n" -"

                  调度程序的属性 ${object.name or ''} :

                  \n" -"
                    \n" -"
                  • 模型: ${object.model or ''}
                  • \n" -"
                  • 方法 : ${object.function or ''}
                  • \n" -"
                  • 参数: ${object.args or ''}
                  • \n" -"
                  • 间隔: ${object.interval_number or '0'} ${object.interval_type or ''}
                  • \n" -"
                  • 通话次数: ${object.numbercall or '0'}
                  • \n" -"
                  • 重复错过了: ${object.doall}
                  • \n" -"
                  • 用户: ${object.user_id.name or ''}
                  • \n" -"
                  \n" -"\n" -"

                  \n" -"--
                  \n" -"Odoo发送的自动电子邮件。请勿回复。
                  \n" -"数据库: ${ctx.get('dbname')}\n" -"

                  \n" -"
                  \n" -" \n" -" " #. module: scheduler_error_mailer #: model:ir.model.fields,field_description:scheduler_error_mailer.field_ir_cron__email_template_id @@ -129,6 +95,83 @@ msgstr "测试调度程序错误邮件程序" msgid "[DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED" msgstr "[DB ${ctx.get('dbname')}] 调度'${object.name or ''}' 失败" +#~ msgid "" +#~ "\n" +#~ " \n" +#~ "
                  \n" +#~ "\n" +#~ "

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

                  \n" +#~ "\n" +#~ "\n" +#~ "${ctx.get('job_exception') and ctx.get('job_exception').value or 'Failed " +#~ "to get the error message from the context.'}\n" +#~ "\n" +#~ "\n" +#~ "

                  You may check the logs of the Odoo server to get more information " +#~ "about this failure.

                  \n" +#~ "\n" +#~ "

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

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

                  \n" +#~ "--
                  \n" +#~ "Automatic e-mail sent by Odoo. Do not reply.
                  \n" +#~ "Database : ${ctx.get('dbname')}\n" +#~ "

                  \n" +#~ "
                  \n" +#~ " \n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " \n" +#~ "
                  \n" +#~ "\n" +#~ "

                  Odoo试图运行调度程序 ${object.name or ''} 在数据库中 " +#~ "${ctx.get('dbname')} 但它失败了。这是错误消息 :

                  \n" +#~ "\n" +#~ "\n" +#~ "${ctx.get('job_exception') and ctx.get('job_exception').value or '无法从上" +#~ "下文中获取错误消息.'}\n" +#~ "\n" +#~ "\n" +#~ "

                  您可以检查Odoo服务器的日志以获取有关此故障的更多信息.

                  \n" +#~ "\n" +#~ "

                  调度程序的属性 ${object.name or ''} :

                  \n" +#~ "
                    \n" +#~ "
                  • 模型: ${object.model or ''}
                  • \n" +#~ "
                  • 方法 : ${object.function or ''}
                  • \n" +#~ "
                  • 参数: ${object.args or ''}
                  • \n" +#~ "
                  • 间隔: ${object.interval_number or '0'} ${object.interval_type or ''}\n" +#~ "
                  • 通话次数: ${object.numbercall or '0'}
                  • \n" +#~ "
                  • 重复错过了: ${object.doall}
                  • \n" +#~ "
                  • 用户: ${object.user_id.name or ''}
                  • \n" +#~ "
                  \n" +#~ "\n" +#~ "

                  \n" +#~ "--
                  \n" +#~ "Odoo发送的自动电子邮件。请勿回复。
                  \n" +#~ "数据库: ${ctx.get('dbname')}\n" +#~ "

                  \n" +#~ "
                  \n" +#~ " \n" +#~ " " + #, fuzzy #~ msgid "Email Template" #~ msgstr "错误E-mail 模板" diff --git a/scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py b/scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py new file mode 100644 index 000000000..90b9f1bf2 --- /dev/null +++ b/scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py @@ -0,0 +1,13 @@ +# Copyright 2021 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + template = env.ref("scheduler_error_mailer.scheduler_error_mailer") + template.body_html = template.body_html.replace( + "${ctx.get('job_exception') and ctx.get('job_exception').value", + "${ctx.get('job_exception')" + ) diff --git a/scheduler_error_mailer/models/ir_cron.py b/scheduler_error_mailer/models/ir_cron.py index 2bce89dd4..9a9ed7a96 100644 --- a/scheduler_error_mailer/models/ir_cron.py +++ b/scheduler_error_mailer/models/ir_cron.py @@ -34,7 +34,7 @@ class IrCron(models.Model): # we put the job_exception in context to be able to print it inside # the email template context = { - 'job_exception': job_exception, + 'job_exception': str(job_exception), 'dbname': self._cr.dbname, } From 89c04ec325f964979c413aebd304cae8570d303d Mon Sep 17 00:00:00 2001 From: Alessandro Uffreduzzi Date: Tue, 14 Sep 2021 17:24:33 +0200 Subject: [PATCH 19/34] [FIX] scheduler_error_mailer: fixed email template fields [UPD] Update scheduler_error_mailer.pot Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: server-tools-12.0/server-tools-12.0-scheduler_error_mailer Translate-URL: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-scheduler_error_mailer/ --- scheduler_error_mailer/__manifest__.py | 2 +- .../data/ir_cron_email_tpl.xml | 5 ++--- scheduler_error_mailer/i18n/de.po | 5 ++--- scheduler_error_mailer/i18n/es.po | 5 ++--- scheduler_error_mailer/i18n/fr.po | 5 ++--- scheduler_error_mailer/i18n/hr.po | 5 ++--- scheduler_error_mailer/i18n/pt.po | 5 ++--- scheduler_error_mailer/i18n/pt_BR.po | 5 ++--- .../i18n/scheduler_error_mailer.pot | 5 ++--- scheduler_error_mailer/i18n/sl.po | 5 ++--- scheduler_error_mailer/i18n/zh_CN.po | 5 ++--- .../migrations/12.0.1.2.0/post-migration.py | 19 +++++++++++++++++++ 12 files changed, 40 insertions(+), 31 deletions(-) create mode 100644 scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py diff --git a/scheduler_error_mailer/__manifest__.py b/scheduler_error_mailer/__manifest__.py index 1ddd01b19..b91457917 100644 --- a/scheduler_error_mailer/__manifest__.py +++ b/scheduler_error_mailer/__manifest__.py @@ -6,7 +6,7 @@ { 'name': 'Scheduler Error Mailer', - 'version': '12.0.1.1.0', + 'version': '12.0.1.2.0', 'category': 'Extra Tools', 'license': 'AGPL-3', 'author': "Akretion,Sodexis,Odoo Community Association (OCA)", diff --git a/scheduler_error_mailer/data/ir_cron_email_tpl.xml b/scheduler_error_mailer/data/ir_cron_email_tpl.xml index 14563fba6..c2349285a 100644 --- a/scheduler_error_mailer/data/ir_cron_email_tpl.xml +++ b/scheduler_error_mailer/data/ir_cron_email_tpl.xml @@ -25,9 +25,8 @@ ${ctx.get('job_exception') or 'Failed to get the error message from the context.

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

                    -
                  • Model : ${object.model or ''}
                  • -
                  • Method : ${object.function or ''}
                  • -
                  • Arguments : ${object.args or ''}
                  • +
                  • Model : ${object.model_id.name or ''}
                  • +
                  • Python code : ${object.code or ''}
                  • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
                  • Number of calls : ${object.numbercall or '0'}
                  • Repeat missed : ${object.doall}
                  • diff --git a/scheduler_error_mailer/i18n/de.po b/scheduler_error_mailer/i18n/de.po index 444f2a1d1..f9ee83396 100644 --- a/scheduler_error_mailer/i18n/de.po +++ b/scheduler_error_mailer/i18n/de.po @@ -40,9 +40,8 @@ msgid "" "\n" "

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

                    \n" "
                      \n" -"
                    • Model : ${object.model or ''}
                    • \n" -"
                    • Method : ${object.function or ''}
                    • \n" -"
                    • Arguments : ${object.args or ''}
                    • \n" +"
                    • Model : ${object.model_id.name or ''}
                    • \n" +"
                    • Python code : ${object.code or ''}
                    • \n" "
                    • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" "
                    • \n" "
                    • Number of calls : ${object.numbercall or '0'}
                    • \n" diff --git a/scheduler_error_mailer/i18n/es.po b/scheduler_error_mailer/i18n/es.po index 162536d5e..606efaebf 100644 --- a/scheduler_error_mailer/i18n/es.po +++ b/scheduler_error_mailer/i18n/es.po @@ -41,9 +41,8 @@ msgid "" "\n" "

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

                      \n" "
                        \n" -"
                      • Model : ${object.model or ''}
                      • \n" -"
                      • Method : ${object.function or ''}
                      • \n" -"
                      • Arguments : ${object.args or ''}
                      • \n" +"
                      • Model : ${object.model_id.name or ''}
                      • \n" +"
                      • Python code : ${object.code or ''}
                      • \n" "
                      • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" "
                      • \n" "
                      • Number of calls : ${object.numbercall or '0'}
                      • \n" diff --git a/scheduler_error_mailer/i18n/fr.po b/scheduler_error_mailer/i18n/fr.po index ad43b27f3..4cae296e9 100644 --- a/scheduler_error_mailer/i18n/fr.po +++ b/scheduler_error_mailer/i18n/fr.po @@ -38,9 +38,8 @@ msgid "" "\n" "

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

                        \n" "
                          \n" -"
                        • Model : ${object.model or ''}
                        • \n" -"
                        • Method : ${object.function or ''}
                        • \n" -"
                        • Arguments : ${object.args or ''}
                        • \n" +"
                        • Model : ${object.model_id.name or ''}
                        • \n" +"
                        • Python code : ${object.code or ''}
                        • \n" "
                        • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" "
                        • \n" "
                        • Number of calls : ${object.numbercall or '0'}
                        • \n" diff --git a/scheduler_error_mailer/i18n/hr.po b/scheduler_error_mailer/i18n/hr.po index d3bfaeceb..e6ab70a6e 100644 --- a/scheduler_error_mailer/i18n/hr.po +++ b/scheduler_error_mailer/i18n/hr.po @@ -41,9 +41,8 @@ msgid "" "\n" "

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

                          \n" "
                            \n" -"
                          • Model : ${object.model or ''}
                          • \n" -"
                          • Method : ${object.function or ''}
                          • \n" -"
                          • Arguments : ${object.args or ''}
                          • \n" +"
                          • Model : ${object.model_id.name or ''}
                          • \n" +"
                          • Python code : ${object.code or ''}
                          • \n" "
                          • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" "
                          • \n" "
                          • Number of calls : ${object.numbercall or '0'}
                          • \n" diff --git a/scheduler_error_mailer/i18n/pt.po b/scheduler_error_mailer/i18n/pt.po index f946200c9..2f1b50ea6 100644 --- a/scheduler_error_mailer/i18n/pt.po +++ b/scheduler_error_mailer/i18n/pt.po @@ -38,9 +38,8 @@ msgid "" "\n" "

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

                            \n" "
                              \n" -"
                            • Model : ${object.model or ''}
                            • \n" -"
                            • Method : ${object.function or ''}
                            • \n" -"
                            • Arguments : ${object.args or ''}
                            • \n" +"
                            • Model : ${object.model_id.name or ''}
                            • \n" +"
                            • Python code : ${object.code or ''}
                            • \n" "
                            • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" "
                            • \n" "
                            • Number of calls : ${object.numbercall or '0'}
                            • \n" diff --git a/scheduler_error_mailer/i18n/pt_BR.po b/scheduler_error_mailer/i18n/pt_BR.po index 6ecf740aa..8c27ed7d3 100644 --- a/scheduler_error_mailer/i18n/pt_BR.po +++ b/scheduler_error_mailer/i18n/pt_BR.po @@ -42,9 +42,8 @@ msgid "" "\n" "

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

                              \n" "
                                \n" -"
                              • Model : ${object.model or ''}
                              • \n" -"
                              • Method : ${object.function or ''}
                              • \n" -"
                              • Arguments : ${object.args or ''}
                              • \n" +"
                              • Model : ${object.model_id.name or ''}
                              • \n" +"
                              • Python code : ${object.code or ''}
                              • \n" "
                              • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" "
                              • \n" "
                              • Number of calls : ${object.numbercall or '0'}
                              • \n" diff --git a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot index 9b3ae95d1..71e57de23 100644 --- a/scheduler_error_mailer/i18n/scheduler_error_mailer.pot +++ b/scheduler_error_mailer/i18n/scheduler_error_mailer.pot @@ -29,9 +29,8 @@ msgid "\n" "\n" "

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

                                \n" "
                                  \n" -"
                                • Model : ${object.model or ''}
                                • \n" -"
                                • Method : ${object.function or ''}
                                • \n" -"
                                • Arguments : ${object.args or ''}
                                • \n" +"
                                • Model : ${object.model_id.name or ''}
                                • \n" +"
                                • Python code : ${object.code or ''}
                                • \n" "
                                • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}
                                • \n" "
                                • Number of calls : ${object.numbercall or '0'}
                                • \n" "
                                • Repeat missed : ${object.doall}
                                • \n" diff --git a/scheduler_error_mailer/i18n/sl.po b/scheduler_error_mailer/i18n/sl.po index b53fdd937..a2c2bed8f 100644 --- a/scheduler_error_mailer/i18n/sl.po +++ b/scheduler_error_mailer/i18n/sl.po @@ -41,9 +41,8 @@ msgid "" "\n" "

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

                                  \n" "
                                    \n" -"
                                  • Model : ${object.model or ''}
                                  • \n" -"
                                  • Method : ${object.function or ''}
                                  • \n" -"
                                  • Arguments : ${object.args or ''}
                                  • \n" +"
                                  • Model : ${object.model_id.name or ''}
                                  • \n" +"
                                  • Python code : ${object.code or ''}
                                  • \n" "
                                  • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" "
                                  • \n" "
                                  • Number of calls : ${object.numbercall or '0'}
                                  • \n" diff --git a/scheduler_error_mailer/i18n/zh_CN.po b/scheduler_error_mailer/i18n/zh_CN.po index 024e63f3f..eaba7c72c 100644 --- a/scheduler_error_mailer/i18n/zh_CN.po +++ b/scheduler_error_mailer/i18n/zh_CN.po @@ -42,9 +42,8 @@ msgid "" "\n" "

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

                                    \n" "
                                      \n" -"
                                    • Model : ${object.model or ''}
                                    • \n" -"
                                    • Method : ${object.function or ''}
                                    • \n" -"
                                    • Arguments : ${object.args or ''}
                                    • \n" +"
                                    • Model : ${object.model_id.name or ''}
                                    • \n" +"
                                    • Python code : ${object.code or ''}
                                    • \n" "
                                    • Interval : ${object.interval_number or '0'} ${object.interval_type or ''}" "
                                    • \n" "
                                    • Number of calls : ${object.numbercall or '0'}
                                    • \n" diff --git a/scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py b/scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py new file mode 100644 index 000000000..7cd61451a --- /dev/null +++ b/scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py @@ -0,0 +1,19 @@ +# Copyright 2021 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + template = env.ref("scheduler_error_mailer.scheduler_error_mailer") + template.body_html = template.body_html.replace( + "${object.model or ''}", "${object.model_id.name or ''}" + ) + template.body_html = template.body_html.replace( + "
                                    • Method : ${object.function or ''}
                                    • ", "" + ) + template.body_html = template.body_html.replace( + "
                                    • Arguments : ${object.args or ''}
                                    • ", + "
                                    • Python code : ${object.code or ''}
                                    • " + ) From 56d9730562af74603c914aa243d9368a4fd457e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Wed, 26 Jan 2022 16:07:26 +0100 Subject: [PATCH 20/34] [IMP] scheduler_error_mailer: black, isort, prettier --- scheduler_error_mailer/__manifest__.py | 25 ++++++------- .../data/ir_cron_email_tpl.xml | 13 ++++--- scheduler_error_mailer/demo/ir_cron_demo.xml | 18 +++++----- .../migrations/12.0.1.1.0/post-migration.py | 2 +- .../migrations/12.0.1.2.0/post-migration.py | 2 +- scheduler_error_mailer/models/ir_cron.py | 35 +++++++++---------- scheduler_error_mailer/views/ir_cron.xml | 9 ++--- 7 files changed, 47 insertions(+), 57 deletions(-) diff --git a/scheduler_error_mailer/__manifest__.py b/scheduler_error_mailer/__manifest__.py index b91457917..5b2c05cb1 100644 --- a/scheduler_error_mailer/__manifest__.py +++ b/scheduler_error_mailer/__manifest__.py @@ -5,18 +5,15 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Scheduler Error Mailer', - 'version': '12.0.1.2.0', - 'category': 'Extra Tools', - 'license': 'AGPL-3', - 'author': "Akretion,Sodexis,Odoo Community Association (OCA)", - 'website': 'https://github.com/OCA/server-tools', - 'depends': ['mail'], - 'data': [ - 'data/ir_cron_email_tpl.xml', - 'views/ir_cron.xml', - ], - 'demo': ['demo/ir_cron_demo.xml'], - 'images': ['images/scheduler_error_mailer.jpg'], - 'installable': True, + "name": "Scheduler Error Mailer", + "version": "12.0.1.2.0", + "category": "Extra Tools", + "license": "AGPL-3", + "author": "Akretion,Sodexis,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/server-tools", + "depends": ["mail"], + "data": ["data/ir_cron_email_tpl.xml", "views/ir_cron.xml",], + "demo": ["demo/ir_cron_demo.xml"], + "images": ["images/scheduler_error_mailer.jpg"], + "installable": True, } diff --git a/scheduler_error_mailer/data/ir_cron_email_tpl.xml b/scheduler_error_mailer/data/ir_cron_email_tpl.xml index c2349285a..6635d080a 100644 --- a/scheduler_error_mailer/data/ir_cron_email_tpl.xml +++ b/scheduler_error_mailer/data/ir_cron_email_tpl.xml @@ -1,16 +1,16 @@ - - + - Scheduler Error ${object.user_id.email or ''} ${object.user_id.email or ''} - [DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED - - + [DB ${ctx.get('dbname')}] Scheduler '${object.name or ''}' FAILED + + @@ -42,6 +42,5 @@ Database : ${ctx.get('dbname')} ]]> - diff --git a/scheduler_error_mailer/demo/ir_cron_demo.xml b/scheduler_error_mailer/demo/ir_cron_demo.xml index 80e3c88cb..d7b10fb66 100644 --- a/scheduler_error_mailer/demo/ir_cron_demo.xml +++ b/scheduler_error_mailer/demo/ir_cron_demo.xml @@ -1,4 +1,4 @@ - + - - Test Scheduler Error Mailer - - + + 1 hours -1 - - + + code model._test_scheduler_failure() - + - diff --git a/scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py b/scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py index 90b9f1bf2..1b013bcd0 100644 --- a/scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py +++ b/scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py @@ -9,5 +9,5 @@ def migrate(env, version): template = env.ref("scheduler_error_mailer.scheduler_error_mailer") template.body_html = template.body_html.replace( "${ctx.get('job_exception') and ctx.get('job_exception').value", - "${ctx.get('job_exception')" + "${ctx.get('job_exception')", ) diff --git a/scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py b/scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py index 7cd61451a..b38dd7941 100644 --- a/scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py +++ b/scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py @@ -15,5 +15,5 @@ def migrate(env, version): ) template.body_html = template.body_html.replace( "
                                    • Arguments : ${object.args or ''}
                                    • ", - "
                                    • Python code : ${object.code or ''}
                                    • " + "
                                    • Python code : ${object.code or ''}
                                    • ", ) diff --git a/scheduler_error_mailer/models/ir_cron.py b/scheduler_error_mailer/models/ir_cron.py index 9a9ed7a96..74a699a1f 100644 --- a/scheduler_error_mailer/models/ir_cron.py +++ b/scheduler_error_mailer/models/ir_cron.py @@ -3,10 +3,10 @@ # Copyright 2018 bloopark systems () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import _, api, fields, models -from odoo.exceptions import UserError import logging +from odoo import _, api, fields, models +from odoo.exceptions import UserError _logger = logging.getLogger(__name__) @@ -18,38 +18,35 @@ class IrCron(models.Model): comodel_name="mail.template", string="Error E-mail Template", help="Select the email template that will be sent when " - "this scheduler fails." + "this scheduler fails.", ) @api.model - def _handle_callback_exception(self, cron_name, server_action_id, job_id, - job_exception): - res = super(IrCron, self)._handle_callback_exception(cron_name, - server_action_id, - job_id, - job_exception) + def _handle_callback_exception( + self, cron_name, server_action_id, job_id, job_exception + ): + res = super(IrCron, self)._handle_callback_exception( + cron_name, server_action_id, 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': str(job_exception), - 'dbname': self._cr.dbname, + "job_exception": str(job_exception), + "dbname": self._cr.dbname, } - _logger.debug( - "Sending scheduler error email with context=%s", context) + _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) + 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) + 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 index a6ee1f9da..d22099c74 100644 --- a/scheduler_error_mailer/views/ir_cron.xml +++ b/scheduler_error_mailer/views/ir_cron.xml @@ -1,4 +1,4 @@ - + - - ir.cron.error.mailer.form ir.cron - + - + - From 14cea449bb820a528b4f5a37cba50cc2baf39c21 Mon Sep 17 00:00:00 2001 From: Achraf Mhadhbi Date: Wed, 26 Feb 2020 21:35:39 +0100 Subject: [PATCH 21/34] [MIG] scheduler_error_mailer: Migration to 13.0 TT27587 --- scheduler_error_mailer/README.rst | 11 ++++++----- scheduler_error_mailer/__manifest__.py | 4 ++-- .../migrations/12.0.1.1.0/post-migration.py | 13 ------------- .../migrations/12.0.1.2.0/post-migration.py | 19 ------------------- scheduler_error_mailer/models/ir_cron.py | 12 ++++-------- .../readme/CONTRIBUTORS.rst | 1 + .../static/description/index.html | 9 +++++---- 7 files changed, 18 insertions(+), 51 deletions(-) delete mode 100644 scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py delete mode 100644 scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py diff --git a/scheduler_error_mailer/README.rst b/scheduler_error_mailer/README.rst index b5dbb228a..78297aef5 100644 --- a/scheduler_error_mailer/README.rst +++ b/scheduler_error_mailer/README.rst @@ -14,13 +14,13 @@ Scheduler Error Mailer :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github - :target: https://github.com/OCA/server-tools/tree/12.0/scheduler_error_mailer + :target: https://github.com/OCA/server-tools/tree/13.0/scheduler_error_mailer :alt: OCA/server-tools .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-scheduler_error_mailer + :target: https://translation.odoo-community.org/projects/server-tools-13-0/server-tools-13-0-scheduler_error_mailer :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/149/12.0 + :target: https://runbot.odoo-community.org/runbot/149/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -47,7 +47,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -72,6 +72,7 @@ Contributors * `Tecnativa `_: * Cristina Martin R. + * Víctor Martínez Maintainers ~~~~~~~~~~~ @@ -86,6 +87,6 @@ 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. -This module is part of the `OCA/server-tools `_ project on GitHub. +This module is part of the `OCA/server-tools `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/scheduler_error_mailer/__manifest__.py b/scheduler_error_mailer/__manifest__.py index 5b2c05cb1..8649d8165 100644 --- a/scheduler_error_mailer/__manifest__.py +++ b/scheduler_error_mailer/__manifest__.py @@ -6,13 +6,13 @@ { "name": "Scheduler Error Mailer", - "version": "12.0.1.2.0", + "version": "13.0.1.0.0", "category": "Extra Tools", "license": "AGPL-3", "author": "Akretion,Sodexis,Odoo Community Association (OCA)", "website": "https://github.com/OCA/server-tools", "depends": ["mail"], - "data": ["data/ir_cron_email_tpl.xml", "views/ir_cron.xml",], + "data": ["data/ir_cron_email_tpl.xml", "views/ir_cron.xml"], "demo": ["demo/ir_cron_demo.xml"], "images": ["images/scheduler_error_mailer.jpg"], "installable": True, diff --git a/scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py b/scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py deleted file mode 100644 index 1b013bcd0..000000000 --- a/scheduler_error_mailer/migrations/12.0.1.1.0/post-migration.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2021 Tecnativa - Víctor Martínez -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from openupgradelib import openupgrade - - -@openupgrade.migrate() -def migrate(env, version): - template = env.ref("scheduler_error_mailer.scheduler_error_mailer") - template.body_html = template.body_html.replace( - "${ctx.get('job_exception') and ctx.get('job_exception').value", - "${ctx.get('job_exception')", - ) diff --git a/scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py b/scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py deleted file mode 100644 index b38dd7941..000000000 --- a/scheduler_error_mailer/migrations/12.0.1.2.0/post-migration.py +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright 2021 Tecnativa - Víctor Martínez -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from openupgradelib import openupgrade - - -@openupgrade.migrate() -def migrate(env, version): - template = env.ref("scheduler_error_mailer.scheduler_error_mailer") - template.body_html = template.body_html.replace( - "${object.model or ''}", "${object.model_id.name or ''}" - ) - template.body_html = template.body_html.replace( - "
                                    • Method : ${object.function or ''}
                                    • ", "" - ) - template.body_html = template.body_html.replace( - "
                                    • Arguments : ${object.args or ''}
                                    • ", - "
                                    • Python code : ${object.code or ''}
                                    • ", - ) diff --git a/scheduler_error_mailer/models/ir_cron.py b/scheduler_error_mailer/models/ir_cron.py index 74a699a1f..7756af433 100644 --- a/scheduler_error_mailer/models/ir_cron.py +++ b/scheduler_error_mailer/models/ir_cron.py @@ -25,7 +25,7 @@ class IrCron(models.Model): def _handle_callback_exception( self, cron_name, server_action_id, job_id, job_exception ): - res = super(IrCron, self)._handle_callback_exception( + res = super()._handle_callback_exception( cron_name, server_action_id, job_id, job_exception ) my_cron = self.browse(job_id) @@ -33,16 +33,12 @@ class IrCron(models.Model): 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": str(job_exception), - "dbname": self._cr.dbname, - } + context = {"job_exception": str(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) + template = my_cron.email_template_id.with_context(context).sudo() + template.send_mail(my_cron.id, force_send=True) return res diff --git a/scheduler_error_mailer/readme/CONTRIBUTORS.rst b/scheduler_error_mailer/readme/CONTRIBUTORS.rst index 496cedb9f..afcb6d058 100644 --- a/scheduler_error_mailer/readme/CONTRIBUTORS.rst +++ b/scheduler_error_mailer/readme/CONTRIBUTORS.rst @@ -7,3 +7,4 @@ * `Tecnativa `_: * Cristina Martin R. + * Víctor Martínez diff --git a/scheduler_error_mailer/static/description/index.html b/scheduler_error_mailer/static/description/index.html index 2586581cf..0977e4b35 100644 --- a/scheduler_error_mailer/static/description/index.html +++ b/scheduler_error_mailer/static/description/index.html @@ -3,7 +3,7 @@ - + Scheduler Error Mailer