diff --git a/fetchmail_notify_error_to_sender/README.rst b/fetchmail_notify_error_to_sender/README.rst index b8dbd0ad1..813be264e 100644 --- a/fetchmail_notify_error_to_sender/README.rst +++ b/fetchmail_notify_error_to_sender/README.rst @@ -1,38 +1,63 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +=============================== Send notice on fetchmail errors =============================== -If fetchmail is not able to correctly route an email, the email is "silently" lost (you get an error message in server log). -For example, if you configure odoo mail system to route received emails according to recipient address, it may happen users send emails to wrong email address. +If fetchmail is not able to correctly route an email, the email is +"silently" lost (you get an error message in server log). + +For example, if you configure odoo mail system to route received emails +according to recipient address, it may happen users send emails to wrong +email address. -This module allows to automatically send a notification email to sender, when odoo can't correctly process the received email. +This module extends the functionality of fetchmail to allow you to +automatically send a notification email to sender, when odoo can't +correctly process the received email. Configuration ============= -Configure your fetchmail server setting 'Error notice template' = 'Fetchmail - error notice'. -You can edit the 'Fetchmail - error notice' email template according to your needs. +To configure this module, you need to: + +#. Configure your fetchmail server setting 'Error notice template' = 'Fetchmail - error notice'. +#. You can edit the 'Fetchmail - error notice' email template according to your needs. + +.. figure:: path/to/local/image.png + :alt: alternative description + :width: 600 px +Usage +===== + +.. 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 -`here `_. - +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 smash it by providing detailed and welcomed feedback. Credits ======= +Images +------ + +* Odoo Community Association: `Icon `_. + Contributors ------------ * Lorenzo Battistini +* Miquel Raïch (migration to v9) Maintainer ---------- @@ -47,4 +72,4 @@ 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 http://odoo-community.org. +To contribute to this module, please visit https://odoo-community.org. \ No newline at end of file diff --git a/fetchmail_notify_error_to_sender/__init__.py b/fetchmail_notify_error_to_sender/__init__.py index 6caf7ed3b..226b25b5f 100644 --- a/fetchmail_notify_error_to_sender/__init__.py +++ b/fetchmail_notify_error_to_sender/__init__.py @@ -1,22 +1,6 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2015 Lorenzo Battistini -# -# 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 . -# -############################################################################## +# Copyright 2015 Lorenzo Battistini +# Copyright 2017 Eficent +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from . import mail_thread -from . import fetchmail +from . import models diff --git a/fetchmail_notify_error_to_sender/__openerp__.py b/fetchmail_notify_error_to_sender/__openerp__.py index b06abb9a8..97d87cbd0 100644 --- a/fetchmail_notify_error_to_sender/__openerp__.py +++ b/fetchmail_notify_error_to_sender/__openerp__.py @@ -1,40 +1,25 @@ # -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2015 Lorenzo Battistini -# -# 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 . -# -############################################################################## +# Copyright 2015 Lorenzo Battistini +# Copyright 2017 Eficent +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'Send notice on fetchmail errors', 'summary': 'If fetching mails gives error, send an email to sender', - 'version': '8.0.1.0.1', + 'version': '9.0.1.0.0', 'category': 'Tools', - 'author': "Agile Business Group,Odoo Community Association (OCA)", - 'website': 'http://www.agilebg.com', + 'author': "Agile Business Group,Eficent,Odoo Community Association (OCA)", + 'website': 'https://github.com/OCA/server-tools', 'license': 'AGPL-3', 'depends': [ 'fetchmail', ], 'data': [ - 'fetchmail_view.xml', - 'email_template_data.xml', + 'views/fetchmail_view.xml', + 'data/email_template_data.xml', ], 'qweb': [ ], - 'installable': False, - 'auto_install': False, + 'installable': True, + 'application': False, } diff --git a/fetchmail_notify_error_to_sender/email_template_data.xml b/fetchmail_notify_error_to_sender/data/email_template_data.xml similarity index 93% rename from fetchmail_notify_error_to_sender/email_template_data.xml rename to fetchmail_notify_error_to_sender/data/email_template_data.xml index 6d98a9725..3bfbb212d 100644 --- a/fetchmail_notify_error_to_sender/email_template_data.xml +++ b/fetchmail_notify_error_to_sender/data/email_template_data.xml @@ -1,9 +1,8 @@ - - + Fetchmail - error notice ${ctx.get('sender_message').get('to')|safe} ${ctx.get('sender_message').get('from')|safe} diff --git a/fetchmail_notify_error_to_sender/fetchmail.py b/fetchmail_notify_error_to_sender/fetchmail.py deleted file mode 100644 index 97233d486..000000000 --- a/fetchmail_notify_error_to_sender/fetchmail.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2015 Lorenzo Battistini -# -# 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 models, fields - - -class fetchmail_server(models.Model): - - _inherit = 'fetchmail.server' - error_notice_template_id = fields.Many2one( - 'email.template', string="Error notice template", - help="Set here the template to use to send notice to sender when " - "errors occur while fetching email") diff --git a/fetchmail_notify_error_to_sender/i18n/de.po b/fetchmail_notify_error_to_sender/i18n/de.po index 6fac306b4..3cc468739 100644 --- a/fetchmail_notify_error_to_sender/i18n/de.po +++ b/fetchmail_notify_error_to_sender/i18n/de.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: fetchmail_notify_error_to_sender -#: model:email.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice msgid "" "\n" "
\n" @@ -49,7 +49,7 @@ msgid "POP/IMAP Server" msgstr "POP/IMAP Server" #. module: fetchmail_notify_error_to_sender -#: model:email.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice msgid "Receiving error with: ${ctx.get('sender_message').get('subject')|safe}" msgstr "Erhalte Fehler mit: ${ctx.get('sender_message').get('subject')|safe}" diff --git a/fetchmail_notify_error_to_sender/i18n/es.po b/fetchmail_notify_error_to_sender/i18n/es.po index ec8a47779..e73ea6f16 100644 --- a/fetchmail_notify_error_to_sender/i18n/es.po +++ b/fetchmail_notify_error_to_sender/i18n/es.po @@ -48,7 +48,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: fetchmail_notify_error_to_sender -#: model:email.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice msgid "" "\n" "
\n" @@ -78,7 +78,7 @@ msgid "POP/IMAP Server" msgstr "Servidor POP/IMAP" #. module: fetchmail_notify_error_to_sender -#: model:email.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice msgid "Receiving error with: ${ctx.get('sender_message').get('subject')|safe}" msgstr "" diff --git a/fetchmail_notify_error_to_sender/i18n/fr.po b/fetchmail_notify_error_to_sender/i18n/fr.po index b77689ef9..4d8878d89 100644 --- a/fetchmail_notify_error_to_sender/i18n/fr.po +++ b/fetchmail_notify_error_to_sender/i18n/fr.po @@ -49,7 +49,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: fetchmail_notify_error_to_sender -#: model:email.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice msgid "" "\n" "
\n" @@ -79,7 +79,7 @@ msgid "POP/IMAP Server" msgstr "Serveur POP/IMAP" #. module: fetchmail_notify_error_to_sender -#: model:email.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice msgid "Receiving error with: ${ctx.get('sender_message').get('subject')|safe}" msgstr "Reçu une erreur avec : ${ctx.get('sender_message').get('subject')|safe}" diff --git a/fetchmail_notify_error_to_sender/i18n/it.po b/fetchmail_notify_error_to_sender/i18n/it.po index ac1646bca..1d6c1bf55 100644 --- a/fetchmail_notify_error_to_sender/i18n/it.po +++ b/fetchmail_notify_error_to_sender/i18n/it.po @@ -27,7 +27,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: fetchmail_notify_error_to_sender -#: model:email.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice msgid "" "\n" "
\n" @@ -57,7 +57,7 @@ msgid "POP/IMAP Server" msgstr "Server POP/IMAP" #. module: fetchmail_notify_error_to_sender -#: model:email.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice msgid "Receiving error with: ${ctx.get('sender_message').get('subject')|safe}" msgstr "" diff --git a/fetchmail_notify_error_to_sender/i18n/pt_BR.po b/fetchmail_notify_error_to_sender/i18n/pt_BR.po index 9da09368c..f2f9fe073 100644 --- a/fetchmail_notify_error_to_sender/i18n/pt_BR.po +++ b/fetchmail_notify_error_to_sender/i18n/pt_BR.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: fetchmail_notify_error_to_sender -#: model:email.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice msgid "" "\n" "
\n" @@ -49,7 +49,7 @@ msgid "POP/IMAP Server" msgstr "Servidor POP/IMAP" #. module: fetchmail_notify_error_to_sender -#: model:email.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice msgid "Receiving error with: ${ctx.get('sender_message').get('subject')|safe}" msgstr "Recebendo erro com: ${ctx.get('sender_message').get('subject')|safe}" diff --git a/fetchmail_notify_error_to_sender/i18n/pt_PT.po b/fetchmail_notify_error_to_sender/i18n/pt_PT.po index 52d4494b3..2b9a8719d 100644 --- a/fetchmail_notify_error_to_sender/i18n/pt_PT.po +++ b/fetchmail_notify_error_to_sender/i18n/pt_PT.po @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: fetchmail_notify_error_to_sender -#: model:email.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice msgid "" "\n" "
\n" @@ -48,7 +48,7 @@ msgid "POP/IMAP Server" msgstr "" #. module: fetchmail_notify_error_to_sender -#: model:email.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice msgid "Receiving error with: ${ctx.get('sender_message').get('subject')|safe}" msgstr "" diff --git a/fetchmail_notify_error_to_sender/i18n/sl.po b/fetchmail_notify_error_to_sender/i18n/sl.po index 7f8037100..99457c8ff 100644 --- a/fetchmail_notify_error_to_sender/i18n/sl.po +++ b/fetchmail_notify_error_to_sender/i18n/sl.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" #. module: fetchmail_notify_error_to_sender -#: model:email.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice msgid "" "\n" "
\n" @@ -49,7 +49,7 @@ msgid "POP/IMAP Server" msgstr "POP/IMAP strežnik" #. module: fetchmail_notify_error_to_sender -#: model:email.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice msgid "Receiving error with: ${ctx.get('sender_message').get('subject')|safe}" msgstr "Napaka pri prejemu: ${ctx.get('sender_message').get('subject')|safe}" diff --git a/fetchmail_notify_error_to_sender/i18n/tr.po b/fetchmail_notify_error_to_sender/i18n/tr.po index 09a8e6c41..2809f641c 100644 --- a/fetchmail_notify_error_to_sender/i18n/tr.po +++ b/fetchmail_notify_error_to_sender/i18n/tr.po @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: fetchmail_notify_error_to_sender -#: model:email.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,body_html:fetchmail_notify_error_to_sender.email_template_error_notice msgid "" "\n" "
\n" @@ -49,7 +49,7 @@ msgid "POP/IMAP Server" msgstr "POP/IMAP sunucu" #. module: fetchmail_notify_error_to_sender -#: model:email.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice +#: model:mail.template,subject:fetchmail_notify_error_to_sender.email_template_error_notice msgid "Receiving error with: ${ctx.get('sender_message').get('subject')|safe}" msgstr "Alınan hata : ${ctx.get('sender_message').get('subject')|safe}" diff --git a/fetchmail_notify_error_to_sender/mail_thread.py b/fetchmail_notify_error_to_sender/mail_thread.py deleted file mode 100644 index 19eddcac4..000000000 --- a/fetchmail_notify_error_to_sender/mail_thread.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2015 Lorenzo Battistini -# -# 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 osv - - -class mail_thread(osv.AbstractModel): - _inherit = 'mail.thread' - - def message_route_verify( - self, cr, uid, message, message_dict, route, update_author=True, - assert_model=True, create_fallback=True, allow_private=False, - context=None - ): - res = () - if context is None: - context = {} - try: - res = super(mail_thread, self).message_route_verify( - cr, uid, message, message_dict, route, - update_author=update_author, assert_model=assert_model, - create_fallback=create_fallback, allow_private=allow_private, - context=context) - except ValueError as ve: - fetchmail_server_id = context.get('fetchmail_server_id') - if not fetchmail_server_id: - raise ve - fetchmail_server = self.pool['fetchmail.server'].browse( - cr, uid, fetchmail_server_id, context) - if not fetchmail_server.error_notice_template_id: - raise ve - context['sender_message'] = message - context['route_exception'] = ve - self.pool['email.template'].send_mail( - cr, uid, fetchmail_server.error_notice_template_id.id, - fetchmail_server.id, context=context) - context['error_notice_sent'] = True - return res - - def message_route( - self, cr, uid, message, message_dict, model=None, thread_id=None, - custom_values=None, context=None - ): - if context is None: - context = {} - res = [] - try: - res = super(mail_thread, self).message_route( - cr, uid, message, message_dict, model=model, - thread_id=thread_id, custom_values=custom_values, - context=context) - except ValueError as ve: - if context.get('error_notice_sent'): - # avoid raising exception and setting mail message UNSEEN - return [] - else: - raise ve - return res diff --git a/fetchmail_notify_error_to_sender/models/__init__.py b/fetchmail_notify_error_to_sender/models/__init__.py new file mode 100644 index 000000000..e18df9772 --- /dev/null +++ b/fetchmail_notify_error_to_sender/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Eficent +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import fetchmail +from . import mail_thread diff --git a/fetchmail_notify_error_to_sender/models/fetchmail.py b/fetchmail_notify_error_to_sender/models/fetchmail.py new file mode 100644 index 000000000..e7be9e163 --- /dev/null +++ b/fetchmail_notify_error_to_sender/models/fetchmail.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Copyright 2015 Lorenzo Battistini +# Copyright 2017 Eficent +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import fields, models + + +class FetchmailServer(models.Model): + + _inherit = 'fetchmail.server' + error_notice_template_id = fields.Many2one( + 'mail.template', string="Error notice template", + help="Set here the template to use to send notice to sender when " + "errors occur while fetching email") diff --git a/fetchmail_notify_error_to_sender/models/mail_thread.py b/fetchmail_notify_error_to_sender/models/mail_thread.py new file mode 100644 index 000000000..6b3c0c7ca --- /dev/null +++ b/fetchmail_notify_error_to_sender/models/mail_thread.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2015 Lorenzo Battistini +# Copyright 2017 Eficent +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import api, models + + +class MailThread(models.AbstractModel): + _inherit = 'mail.thread' + + @api.model + def message_route_verify( + self, message, message_dict, route, update_author=True, + assert_model=True, create_fallback=True, allow_private=False): + res = () + try: + res = super(MailThread, self).message_route_verify( + message, message_dict, route, + update_author=update_author, assert_model=assert_model, + create_fallback=create_fallback, allow_private=allow_private) + except ValueError as ve: + fetchmail_server_id = self.env.context.get('fetchmail_server_id') + if not fetchmail_server_id: + raise ve + fetchmail_server = self.pool['fetchmail.server'].browse( + fetchmail_server_id) + if not fetchmail_server.error_notice_template_id: + raise ve + self.env.context['sender_message'] = message + self.env.context['route_exception'] = ve + self.env['mail.template'].send_mail( + fetchmail_server.error_notice_template_id.id, + fetchmail_server.id) + self.env.context['error_notice_sent'] = True + return res + + @api.model + def message_route( + self, message, message_dict, model=None, thread_id=None, + custom_values=None): + res = [] + try: + res = super(MailThread, self).message_route( + message, message_dict, model=model, + thread_id=thread_id, custom_values=custom_values) + except ValueError as ve: + if self.env.context.get('error_notice_sent'): + # avoid raising exception and setting mail message UNSEEN + return [] + else: + raise ve + return res diff --git a/fetchmail_notify_error_to_sender/fetchmail_view.xml b/fetchmail_notify_error_to_sender/views/fetchmail_view.xml similarity index 71% rename from fetchmail_notify_error_to_sender/fetchmail_view.xml rename to fetchmail_notify_error_to_sender/views/fetchmail_view.xml index c7223b29a..b3fbcd8b1 100644 --- a/fetchmail_notify_error_to_sender/fetchmail_view.xml +++ b/fetchmail_notify_error_to_sender/views/fetchmail_view.xml @@ -1,16 +1,13 @@ - - - + fetchmail.server.form fetchmail.server - + - + - - +