From 0d3760d438b6b0e8f8861b88f3453b38ea35d686 Mon Sep 17 00:00:00 2001 From: "Adrien Peiffer (ACSONE)" Date: Wed, 25 May 2016 16:03:38 +0200 Subject: [PATCH 01/41] Add mail_optional_follower_notification module (#60) * [ADD] Add mail_optional_follower_notifications module * [CHG][mail_optional_follower_notifications] Readme. * [IMP][mail_optional_follower_notifications] Code review. * [CHG] Rename mail_optional_follower_notifications to mail_optional_follower_notification * [IMP][mail_optional_follower_notification] Review --- .../README.rst | 60 ++++++++++++++++++ .../__init__.py | 6 ++ .../__openerp__.py | 22 +++++++ .../i18n/ca.po | 45 +++++++++++++ .../i18n/de.po | 45 +++++++++++++ .../i18n/en.po | 45 +++++++++++++ .../i18n/es.po | 45 +++++++++++++ .../i18n/es_CO.po | 45 +++++++++++++ .../i18n/pt_BR.po | 45 +++++++++++++ .../i18n/sl.po | 46 ++++++++++++++ .../models/__init__.py | 6 ++ .../models/mail_message.py | 19 ++++++ .../models/mail_notification.py | 19 ++++++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../description/optional_follower_001.png | Bin 0 -> 27097 bytes .../description/optional_follower_002.png | Bin 0 -> 32104 bytes .../tests/__init__.py | 5 ++ ...st_mail_optional_follower_notifications.py | 54 ++++++++++++++++ .../wizard/__init__.py | 5 ++ .../wizard/mail_compose_message.py | 19 ++++++ .../wizard/mail_compose_message_view.xml | 18 ++++++ 21 files changed, 549 insertions(+) create mode 100644 mail_optional_follower_notification/README.rst create mode 100644 mail_optional_follower_notification/__init__.py create mode 100644 mail_optional_follower_notification/__openerp__.py create mode 100644 mail_optional_follower_notification/i18n/ca.po create mode 100644 mail_optional_follower_notification/i18n/de.po create mode 100644 mail_optional_follower_notification/i18n/en.po create mode 100644 mail_optional_follower_notification/i18n/es.po create mode 100644 mail_optional_follower_notification/i18n/es_CO.po create mode 100644 mail_optional_follower_notification/i18n/pt_BR.po create mode 100644 mail_optional_follower_notification/i18n/sl.po create mode 100644 mail_optional_follower_notification/models/__init__.py create mode 100644 mail_optional_follower_notification/models/mail_message.py create mode 100644 mail_optional_follower_notification/models/mail_notification.py create mode 100644 mail_optional_follower_notification/static/description/icon.png create mode 100644 mail_optional_follower_notification/static/description/optional_follower_001.png create mode 100644 mail_optional_follower_notification/static/description/optional_follower_002.png create mode 100644 mail_optional_follower_notification/tests/__init__.py create mode 100644 mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py create mode 100644 mail_optional_follower_notification/wizard/__init__.py create mode 100644 mail_optional_follower_notification/wizard/mail_compose_message.py create mode 100644 mail_optional_follower_notification/wizard/mail_compose_message_view.xml diff --git a/mail_optional_follower_notification/README.rst b/mail_optional_follower_notification/README.rst new file mode 100644 index 0000000000..3132e6f05f --- /dev/null +++ b/mail_optional_follower_notification/README.rst @@ -0,0 +1,60 @@ +.. 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 + +==================================== +Mail optional follower notifications +==================================== + +This module adds the possibility to choose if you want to automatically +notify followers on mail.compose.message. By default, Odoo notify +automatically all followers. + +Usage +===== + +To use this module, you need to use the checkbox near "Followers of the document and" on mail.compose.message: + +This field it's initialized to true to keep the standard behavior. + +.. figure:: static/description/optional_follower_001.png + :alt: Default checkbox + +.. figure:: static/description/optional_follower_002.png + :alt: Checkbox to avoid to notify automatically followers + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/205/8.0 + + * https://www.odoo.com/forum/help-1 + + +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 `_. + +Credits +======= + +Contributors +------------ + +* Adrien Peiffer + +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. \ No newline at end of file diff --git a/mail_optional_follower_notification/__init__.py b/mail_optional_follower_notification/__init__.py new file mode 100644 index 0000000000..98aa84d409 --- /dev/null +++ b/mail_optional_follower_notification/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models +from . import wizard diff --git a/mail_optional_follower_notification/__openerp__.py b/mail_optional_follower_notification/__openerp__.py new file mode 100644 index 0000000000..5421f2880a --- /dev/null +++ b/mail_optional_follower_notification/__openerp__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + 'name': "Mail optional follower notification", + + 'summary': """ + Choose if you want to automatically notify followers + on mail.compose.message""", + 'author': 'ACSONE SA/NV,' + 'Odoo Community Association (OCA)', + 'website': "http://acsone.eu", + 'category': 'Social Network', + 'version': '8.0.1.0.0', + 'license': 'AGPL-3', + 'depends': [ + 'mail', + ], + 'data': [ + 'wizard/mail_compose_message_view.xml', + ], +} diff --git a/mail_optional_follower_notification/i18n/ca.po b/mail_optional_follower_notification/i18n/ca.po new file mode 100644 index 0000000000..2889abdae0 --- /dev/null +++ b/mail_optional_follower_notification/i18n/ca.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_optional_follower_notification +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: social (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-26 02:42+0000\n" +"PO-Revision-Date: 2016-05-25 14:10+0000\n" +"Last-Translator: <>\n" +"Language-Team: Catalan (http://www.transifex.com/oca/OCA-social-8-0/language/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_optional_follower_notification +#: view:mail.compose.message:mail_optional_follower_notification.email_compose_message_wizard_inherit_form +msgid "" +"- Warning : Followers will not be notified but they can access the " +"notification directly from the document (if they are allowed to)" +msgstr "" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_compose_message +msgid "Email composition wizard" +msgstr "Assistent per composició de correus electrònics" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_message +msgid "Message" +msgstr "Missatge" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_notification +msgid "Notifications" +msgstr "" + +#. module: mail_optional_follower_notification +#: field:mail.compose.message,notify_followers:0 +msgid "Notify followers" +msgstr "" diff --git a/mail_optional_follower_notification/i18n/de.po b/mail_optional_follower_notification/i18n/de.po new file mode 100644 index 0000000000..460d58dd4a --- /dev/null +++ b/mail_optional_follower_notification/i18n/de.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_optional_follower_notification +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: social (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-26 02:42+0000\n" +"PO-Revision-Date: 2016-05-25 14:10+0000\n" +"Last-Translator: <>\n" +"Language-Team: German (http://www.transifex.com/oca/OCA-social-8-0/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: mail_optional_follower_notification +#: view:mail.compose.message:mail_optional_follower_notification.email_compose_message_wizard_inherit_form +msgid "" +"- Warning : Followers will not be notified but they can access the " +"notification directly from the document (if they are allowed to)" +msgstr "" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_compose_message +msgid "Email composition wizard" +msgstr "Assistent zum Email verfassen" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_message +msgid "Message" +msgstr "Nachricht" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_notification +msgid "Notifications" +msgstr "" + +#. module: mail_optional_follower_notification +#: field:mail.compose.message,notify_followers:0 +msgid "Notify followers" +msgstr "" diff --git a/mail_optional_follower_notification/i18n/en.po b/mail_optional_follower_notification/i18n/en.po new file mode 100644 index 0000000000..31d8f26a4f --- /dev/null +++ b/mail_optional_follower_notification/i18n/en.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_optional_follower_notification +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: social (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-26 02:42+0000\n" +"PO-Revision-Date: 2016-05-25 14:10+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: English (http://www.transifex.com/oca/OCA-social-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: mail_optional_follower_notification +#: view:mail.compose.message:mail_optional_follower_notification.email_compose_message_wizard_inherit_form +msgid "" +"- Warning : Followers will not be notified but they can access the " +"notification directly from the document (if they are allowed to)" +msgstr "- Warning : Followers will not be notified but they can access the notification directly from the document (if they are allowed to)" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_compose_message +msgid "Email composition wizard" +msgstr "Email composition wizard" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_message +msgid "Message" +msgstr "Message" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_notification +msgid "Notifications" +msgstr "Notifications" + +#. module: mail_optional_follower_notification +#: field:mail.compose.message,notify_followers:0 +msgid "Notify followers" +msgstr "Notify followers" diff --git a/mail_optional_follower_notification/i18n/es.po b/mail_optional_follower_notification/i18n/es.po new file mode 100644 index 0000000000..122a99fc77 --- /dev/null +++ b/mail_optional_follower_notification/i18n/es.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_optional_follower_notification +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: social (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-26 02:42+0000\n" +"PO-Revision-Date: 2016-05-25 14:10+0000\n" +"Last-Translator: <>\n" +"Language-Team: Spanish (http://www.transifex.com/oca/OCA-social-8-0/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: mail_optional_follower_notification +#: view:mail.compose.message:mail_optional_follower_notification.email_compose_message_wizard_inherit_form +msgid "" +"- Warning : Followers will not be notified but they can access the " +"notification directly from the document (if they are allowed to)" +msgstr "" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_compose_message +msgid "Email composition wizard" +msgstr "Asistente composición Correo Electrónico" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_message +msgid "Message" +msgstr "Mensaje" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_notification +msgid "Notifications" +msgstr "Notificaciones" + +#. module: mail_optional_follower_notification +#: field:mail.compose.message,notify_followers:0 +msgid "Notify followers" +msgstr "" diff --git a/mail_optional_follower_notification/i18n/es_CO.po b/mail_optional_follower_notification/i18n/es_CO.po new file mode 100644 index 0000000000..5d3380a92d --- /dev/null +++ b/mail_optional_follower_notification/i18n/es_CO.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_optional_follower_notification +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: social (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-26 02:42+0000\n" +"PO-Revision-Date: 2016-05-25 14:10+0000\n" +"Last-Translator: <>\n" +"Language-Team: Spanish (Colombia) (http://www.transifex.com/oca/OCA-social-8-0/language/es_CO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_CO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_optional_follower_notification +#: view:mail.compose.message:mail_optional_follower_notification.email_compose_message_wizard_inherit_form +msgid "" +"- Warning : Followers will not be notified but they can access the " +"notification directly from the document (if they are allowed to)" +msgstr "" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_compose_message +msgid "Email composition wizard" +msgstr "Asistente de redacción de E-mail" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_message +msgid "Message" +msgstr "Mensaje" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_notification +msgid "Notifications" +msgstr "" + +#. module: mail_optional_follower_notification +#: field:mail.compose.message,notify_followers:0 +msgid "Notify followers" +msgstr "" diff --git a/mail_optional_follower_notification/i18n/pt_BR.po b/mail_optional_follower_notification/i18n/pt_BR.po new file mode 100644 index 0000000000..2321d5ed38 --- /dev/null +++ b/mail_optional_follower_notification/i18n/pt_BR.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_optional_follower_notification +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: social (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-26 02:42+0000\n" +"PO-Revision-Date: 2016-05-25 14:10+0000\n" +"Last-Translator: <>\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-social-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: mail_optional_follower_notification +#: view:mail.compose.message:mail_optional_follower_notification.email_compose_message_wizard_inherit_form +msgid "" +"- Warning : Followers will not be notified but they can access the " +"notification directly from the document (if they are allowed to)" +msgstr "" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_compose_message +msgid "Email composition wizard" +msgstr "Assistente de Composição de Email" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_message +msgid "Message" +msgstr "Mensagem" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_notification +msgid "Notifications" +msgstr "" + +#. module: mail_optional_follower_notification +#: field:mail.compose.message,notify_followers:0 +msgid "Notify followers" +msgstr "" diff --git a/mail_optional_follower_notification/i18n/sl.po b/mail_optional_follower_notification/i18n/sl.po new file mode 100644 index 0000000000..6942575cd4 --- /dev/null +++ b/mail_optional_follower_notification/i18n/sl.po @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_optional_follower_notification +# +# Translators: +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: social (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-26 02:42+0000\n" +"PO-Revision-Date: 2016-05-26 04:13+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-social-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: mail_optional_follower_notification +#: view:mail.compose.message:mail_optional_follower_notification.email_compose_message_wizard_inherit_form +msgid "" +"- Warning : Followers will not be notified but they can access the " +"notification directly from the document (if they are allowed to)" +msgstr "- Pozor : Sledilci ne bodo obveščeni, lahko pa neposredno dostopajo do obvestila v dokumentu (če za to imajo pravice)" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_compose_message +msgid "Email composition wizard" +msgstr "Čarovnik za sestavljanje e-pošte" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_message +msgid "Message" +msgstr "Sporočilo" + +#. module: mail_optional_follower_notification +#: model:ir.model,name:mail_optional_follower_notification.model_mail_notification +msgid "Notifications" +msgstr "Obvestila" + +#. module: mail_optional_follower_notification +#: field:mail.compose.message,notify_followers:0 +msgid "Notify followers" +msgstr "Obvesti sledilce" diff --git a/mail_optional_follower_notification/models/__init__.py b/mail_optional_follower_notification/models/__init__.py new file mode 100644 index 0000000000..cc213b9fc9 --- /dev/null +++ b/mail_optional_follower_notification/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import mail_message +from . import mail_notification diff --git a/mail_optional_follower_notification/models/mail_message.py b/mail_optional_follower_notification/models/mail_message.py new file mode 100644 index 0000000000..fe64abc01c --- /dev/null +++ b/mail_optional_follower_notification/models/mail_message.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api + + +class MailMessage(models.Model): + _inherit = 'mail.message' + + @api.model + def create(self, values): + ctx = self.env.context.copy() + if not ctx.get('notify_followers') and values.get('partner_ids'): + partner_list = self.resolve_2many_commands( + 'partner_ids', values.get('partner_ids'), fields=['id']) + force_partners_to_notify = [d['id'] for d in partner_list] + ctx['force_partners_to_notify'] = force_partners_to_notify + return super(MailMessage, self.with_context(ctx)).create(values) diff --git a/mail_optional_follower_notification/models/mail_notification.py b/mail_optional_follower_notification/models/mail_notification.py new file mode 100644 index 0000000000..47cf08b6a4 --- /dev/null +++ b/mail_optional_follower_notification/models/mail_notification.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api + + +class MailNotification(models.Model): + _inherit = 'mail.notification' + + @api.model + def _notify(self, message_id, partners_to_notify=None, + force_send=False, user_signature=True): + if self.env.context.get('force_partners_to_notify'): + partners_to_notify =\ + self.env.context.get('force_partners_to_notify') + super(MailNotification, self)._notify( + message_id, partners_to_notify=partners_to_notify, + force_send=force_send, user_signature=user_signature) diff --git a/mail_optional_follower_notification/static/description/icon.png b/mail_optional_follower_notification/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/mail_optional_follower_notification/static/description/optional_follower_001.png b/mail_optional_follower_notification/static/description/optional_follower_001.png new file mode 100644 index 0000000000000000000000000000000000000000..897e596cfed35f9f294bda200c4ab1ee4ca2cc6f GIT binary patch literal 27097 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 W|6`JU{Q>;ZzMI+xT7}ncKlnfQxV$w0 literal 0 HcmV?d00001 diff --git a/mail_optional_follower_notification/static/description/optional_follower_002.png b/mail_optional_follower_notification/static/description/optional_follower_002.png new file mode 100644 index 0000000000000000000000000000000000000000..24d9d9756f72063c577d84f9761610c13b29ddcc GIT binary patch literal 32104 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 Vj&4(aiU*xaT}4Z|`2LgU{|T9XBu4-M literal 0 HcmV?d00001 diff --git a/mail_optional_follower_notification/tests/__init__.py b/mail_optional_follower_notification/tests/__init__.py new file mode 100644 index 0000000000..2a6791af4a --- /dev/null +++ b/mail_optional_follower_notification/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import test_mail_optional_follower_notifications diff --git a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py new file mode 100644 index 0000000000..4f128323a8 --- /dev/null +++ b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp.tests import common + + +class TestMailOptionalFollowernotifications(common.TransactionCase): + + def setUp(self): + super(TestMailOptionalFollowernotifications, self).setUp() + self.partner_obj = self.env['res.partner'] + self.partner_01 = self.env.ref('base.res_partner_2') + self.partner_02 = self.env.ref('base.res_partner_13') + self.partner_03 = self.env.ref('base.res_partner_5') + + def test_send_email_optional_follower_notifications(self): + ctx = self.env.context.copy() + ctx.update({ + 'default_model': 'res.partner', + 'default_res_id': self.partner_01.id, + 'default_composition_mode': 'comment', + }) + mail_compose = self.env['mail.compose.message'] + values = mail_compose.with_context(ctx)\ + .onchange_template_id(False, 'comment', 'res.partner', + self.partner_01.id)['value'] + values['partner_ids'] = [(4, self.partner_02.id), + (4, self.partner_03.id)] + compose_id = mail_compose.with_context(ctx).create(values) + compose_id.with_context(ctx).send_mail() + res = self.env["mail.message"].search( + [('model', '=', 'res.partner'), + ('res_id', '=', self.partner_01.id)]) + self.assertEqual(len(res.ids), 1) + message = self.env['mail.message'] + for record in res: + if record.notified_partner_ids.ids == [self.partner_03.id] and\ + record.partner_ids.ids == [self.partner_03.id]: + message += record + self.assertEqual(len(message.ids), 0) + values['partner_ids'] = [(6, 0, [self.partner_03.id])] + compose_id = mail_compose.with_context(ctx).create(values) + compose_id.notify_followers = False + compose_id.with_context(ctx).send_mail() + res = self.env["mail.message"].search( + [('model', '=', 'res.partner'), + ('res_id', '=', self.partner_01.id)]) + message = self.env['mail.message'] + for record in res: + if record.notified_partner_ids.ids == [self.partner_03.id] and\ + record.partner_ids.ids == [self.partner_03.id]: + message += record + self.assertEqual(len(message.ids), 1) diff --git a/mail_optional_follower_notification/wizard/__init__.py b/mail_optional_follower_notification/wizard/__init__.py new file mode 100644 index 0000000000..56c0250a08 --- /dev/null +++ b/mail_optional_follower_notification/wizard/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import mail_compose_message diff --git a/mail_optional_follower_notification/wizard/mail_compose_message.py b/mail_optional_follower_notification/wizard/mail_compose_message.py new file mode 100644 index 0000000000..b6bc90538f --- /dev/null +++ b/mail_optional_follower_notification/wizard/mail_compose_message.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class MailComposeMessage(models.TransientModel): + _inherit = 'mail.compose.message' + + notify_followers = fields.Boolean(default=True) + + @api.multi + def send_mail(self): + for wizard in self: + wizard = wizard.with_context( + notify_followers=wizard.notify_followers) + super(MailComposeMessage, wizard).send_mail() + return {'type': 'ir.actions.act_window_close'} diff --git a/mail_optional_follower_notification/wizard/mail_compose_message_view.xml b/mail_optional_follower_notification/wizard/mail_compose_message_view.xml new file mode 100644 index 0000000000..62078101f6 --- /dev/null +++ b/mail_optional_follower_notification/wizard/mail_compose_message_view.xml @@ -0,0 +1,18 @@ + + + + + mail.compose.message.form (mail_optional_autofollow) + mail.compose.message + + + + + + + - Warning : Followers will not be notified but they can access the notification directly from the document (if they are allowed to) + + + + + \ No newline at end of file From ef90661a60c70eaa44490e73b2b46bfa4fa331b8 Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Wed, 25 May 2016 14:12:00 +0200 Subject: [PATCH 02/41] Upgrade version from 8 -> 9 --- mail_optional_follower_notification/README.rst | 5 +++-- mail_optional_follower_notification/__openerp__.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mail_optional_follower_notification/README.rst b/mail_optional_follower_notification/README.rst index 3132e6f05f..2e08dc16e3 100644 --- a/mail_optional_follower_notification/README.rst +++ b/mail_optional_follower_notification/README.rst @@ -25,7 +25,7 @@ This field it's initialized to true to keep the standard behavior. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/205/8.0 + :target: https://runbot.odoo-community.org/runbot/205/9.0 * https://www.odoo.com/forum/help-1 @@ -45,6 +45,7 @@ Contributors ------------ * Adrien Peiffer +* Laurent Mignon Maintainer ---------- @@ -57,4 +58,4 @@ 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. \ No newline at end of file +To contribute to this module, please visit https://odoo-community.org. diff --git a/mail_optional_follower_notification/__openerp__.py b/mail_optional_follower_notification/__openerp__.py index 5421f2880a..752029eec1 100644 --- a/mail_optional_follower_notification/__openerp__.py +++ b/mail_optional_follower_notification/__openerp__.py @@ -11,7 +11,7 @@ 'Odoo Community Association (OCA)', 'website': "http://acsone.eu", 'category': 'Social Network', - 'version': '8.0.1.0.0', + 'version': '9.0.1.0.0', 'license': 'AGPL-3', 'depends': [ 'mail', From 4b8bc2eebac8775aa9c2e3e5808bea6700ef5440 Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Wed, 25 May 2016 15:34:16 +0200 Subject: [PATCH 03/41] mail.notification has been removed. The notify is done directly on the res.partner and channel --- .../models/__init__.py | 2 +- .../models/mail_notification.py | 19 ------------------- .../models/res_partner.py | 18 ++++++++++++++++++ 3 files changed, 19 insertions(+), 20 deletions(-) delete mode 100644 mail_optional_follower_notification/models/mail_notification.py create mode 100644 mail_optional_follower_notification/models/res_partner.py diff --git a/mail_optional_follower_notification/models/__init__.py b/mail_optional_follower_notification/models/__init__.py index cc213b9fc9..0c4de32196 100644 --- a/mail_optional_follower_notification/models/__init__.py +++ b/mail_optional_follower_notification/models/__init__.py @@ -3,4 +3,4 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import mail_message -from . import mail_notification +from . import res_partner diff --git a/mail_optional_follower_notification/models/mail_notification.py b/mail_optional_follower_notification/models/mail_notification.py deleted file mode 100644 index 47cf08b6a4..0000000000 --- a/mail_optional_follower_notification/models/mail_notification.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2016 ACSONE SA/NV () -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from openerp import models, api - - -class MailNotification(models.Model): - _inherit = 'mail.notification' - - @api.model - def _notify(self, message_id, partners_to_notify=None, - force_send=False, user_signature=True): - if self.env.context.get('force_partners_to_notify'): - partners_to_notify =\ - self.env.context.get('force_partners_to_notify') - super(MailNotification, self)._notify( - message_id, partners_to_notify=partners_to_notify, - force_send=force_send, user_signature=user_signature) diff --git a/mail_optional_follower_notification/models/res_partner.py b/mail_optional_follower_notification/models/res_partner.py new file mode 100644 index 0000000000..4c7e53f49b --- /dev/null +++ b/mail_optional_follower_notification/models/res_partner.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + @api.multi + def _notify(self, message, force_send=False, user_signature=True): + if self.env.context.get('force_partners_to_notify'): + partners_to_notify =\ + self.env.context.get('force_partners_to_notify') + self = self.filtered(lambda p: p.id in partners_to_notify) + super(ResPartner, self)._notify( + message, force_send=False, user_signature=True) From aee69b6fe325f6afeb9cecf994b7345aa5e171e8 Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Mon, 13 Jun 2016 10:12:23 +0200 Subject: [PATCH 04/41] Tests: Replace XML_IDs no more available in 9.0 --- .../tests/test_mail_optional_follower_notifications.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py index 4f128323a8..1ca61bfbee 100644 --- a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py +++ b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py @@ -11,8 +11,8 @@ def setUp(self): super(TestMailOptionalFollowernotifications, self).setUp() self.partner_obj = self.env['res.partner'] self.partner_01 = self.env.ref('base.res_partner_2') - self.partner_02 = self.env.ref('base.res_partner_13') - self.partner_03 = self.env.ref('base.res_partner_5') + self.partner_02 = self.env.ref('base.res_partner_3') + self.partner_03 = self.env.ref('base.res_partner_4') def test_send_email_optional_follower_notifications(self): ctx = self.env.context.copy() From 63b0d38be4fb77841ef605a884ea7e63cd10faf3 Mon Sep 17 00:00:00 2001 From: Thomas Binsfeld Date: Fri, 19 Aug 2016 09:40:09 +0200 Subject: [PATCH 05/41] Argument auto_commit in send_mail --- .../wizard/mail_compose_message.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mail_optional_follower_notification/wizard/mail_compose_message.py b/mail_optional_follower_notification/wizard/mail_compose_message.py index b6bc90538f..0153bfe650 100644 --- a/mail_optional_follower_notification/wizard/mail_compose_message.py +++ b/mail_optional_follower_notification/wizard/mail_compose_message.py @@ -11,9 +11,10 @@ class MailComposeMessage(models.TransientModel): notify_followers = fields.Boolean(default=True) @api.multi - def send_mail(self): + def send_mail(self, auto_commit=False): for wizard in self: wizard = wizard.with_context( notify_followers=wizard.notify_followers) - super(MailComposeMessage, wizard).send_mail() + super(MailComposeMessage, wizard).send_mail( + auto_commit=auto_commit) return {'type': 'ir.actions.act_window_close'} From 6be1a3e5fd4a1eec150a372557c8309ba983df63 Mon Sep 17 00:00:00 2001 From: "Adrien Peiffer (ACSONE)" Date: Mon, 24 Oct 2016 11:46:07 +0200 Subject: [PATCH 06/41] Migration of mail_optional_follower_notification to 10.0 --- mail_optional_follower_notification/README.rst | 5 ++--- .../{__openerp__.py => __manifest__.py} | 0 .../models/mail_message.py | 14 +++++++++++++- .../models/res_partner.py | 8 +++++--- .../test_mail_optional_follower_notifications.py | 13 +++++++------ .../wizard/mail_compose_message.py | 2 +- .../wizard/mail_compose_message_view.xml | 4 ++-- 7 files changed, 30 insertions(+), 16 deletions(-) rename mail_optional_follower_notification/{__openerp__.py => __manifest__.py} (100%) diff --git a/mail_optional_follower_notification/README.rst b/mail_optional_follower_notification/README.rst index 2e08dc16e3..0998cc9d22 100644 --- a/mail_optional_follower_notification/README.rst +++ b/mail_optional_follower_notification/README.rst @@ -25,7 +25,7 @@ This field it's initialized to true to keep the standard behavior. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/205/9.0 + :target: https://runbot.odoo-community.org/runbot/205/10.0 * https://www.odoo.com/forum/help-1 @@ -35,8 +35,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 -`here `_. +If you spotted it first, help us smashing it by providing a detailed and welcomed feedback. Credits ======= diff --git a/mail_optional_follower_notification/__openerp__.py b/mail_optional_follower_notification/__manifest__.py similarity index 100% rename from mail_optional_follower_notification/__openerp__.py rename to mail_optional_follower_notification/__manifest__.py diff --git a/mail_optional_follower_notification/models/mail_message.py b/mail_optional_follower_notification/models/mail_message.py index fe64abc01c..4768bb8198 100644 --- a/mail_optional_follower_notification/models/mail_message.py +++ b/mail_optional_follower_notification/models/mail_message.py @@ -2,7 +2,7 @@ # Copyright 2016 ACSONE SA/NV () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, api +from odoo import models, api class MailMessage(models.Model): @@ -17,3 +17,15 @@ def create(self, values): force_partners_to_notify = [d['id'] for d in partner_list] ctx['force_partners_to_notify'] = force_partners_to_notify return super(MailMessage, self.with_context(ctx)).create(values) + + @api.multi + def _notify(self, force_send=False, send_after_commit=True, + user_signature=True): + res = super(MailMessage, self)._notify( + force_send=force_send, send_after_commit=send_after_commit, + user_signature=user_signature) + if not self.env.context.get('notify_followers'): + # Needaction only for recipients + self.needaction_partner_ids = [(6, 0, self.partner_ids.ids)] + return res + diff --git a/mail_optional_follower_notification/models/res_partner.py b/mail_optional_follower_notification/models/res_partner.py index 4c7e53f49b..f32d9bb0c8 100644 --- a/mail_optional_follower_notification/models/res_partner.py +++ b/mail_optional_follower_notification/models/res_partner.py @@ -2,17 +2,19 @@ # Copyright 2016 ACSONE SA/NV () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, api +from odoo import models, api class ResPartner(models.Model): _inherit = 'res.partner' @api.multi - def _notify(self, message, force_send=False, user_signature=True): + def _notify(self, message, force_send=False, send_after_commit=True, + user_signature=True): if self.env.context.get('force_partners_to_notify'): partners_to_notify =\ self.env.context.get('force_partners_to_notify') self = self.filtered(lambda p: p.id in partners_to_notify) super(ResPartner, self)._notify( - message, force_send=False, user_signature=True) + message, force_send=force_send, + send_after_commit=send_after_commit, user_signature=user_signature) diff --git a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py index 1ca61bfbee..919367287a 100644 --- a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py +++ b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py @@ -2,7 +2,7 @@ # Copyright 2016 ACSONE SA/NV () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp.tests import common +from odoo.tests import common class TestMailOptionalFollowernotifications(common.TransactionCase): @@ -11,8 +11,8 @@ def setUp(self): super(TestMailOptionalFollowernotifications, self).setUp() self.partner_obj = self.env['res.partner'] self.partner_01 = self.env.ref('base.res_partner_2') - self.partner_02 = self.env.ref('base.res_partner_3') - self.partner_03 = self.env.ref('base.res_partner_4') + self.demo_user = self.env.ref('base.user_demo') + self.partner_03 = self.demo_user.copy().partner_id def test_send_email_optional_follower_notifications(self): ctx = self.env.context.copy() @@ -22,10 +22,11 @@ def test_send_email_optional_follower_notifications(self): 'default_composition_mode': 'comment', }) mail_compose = self.env['mail.compose.message'] + self.partner_01.message_subscribe_users(user_ids=[self.demo_user.id]) values = mail_compose.with_context(ctx)\ .onchange_template_id(False, 'comment', 'res.partner', self.partner_01.id)['value'] - values['partner_ids'] = [(4, self.partner_02.id), + values['partner_ids'] = [(4, self.demo_user.partner_id.id), (4, self.partner_03.id)] compose_id = mail_compose.with_context(ctx).create(values) compose_id.with_context(ctx).send_mail() @@ -35,7 +36,7 @@ def test_send_email_optional_follower_notifications(self): self.assertEqual(len(res.ids), 1) message = self.env['mail.message'] for record in res: - if record.notified_partner_ids.ids == [self.partner_03.id] and\ + if record.notification_ids.mapped('res_partner_id').ids == [self.partner_03.id] and\ record.partner_ids.ids == [self.partner_03.id]: message += record self.assertEqual(len(message.ids), 0) @@ -48,7 +49,7 @@ def test_send_email_optional_follower_notifications(self): ('res_id', '=', self.partner_01.id)]) message = self.env['mail.message'] for record in res: - if record.notified_partner_ids.ids == [self.partner_03.id] and\ + if record.notification_ids.mapped('res_partner_id').ids == [self.partner_03.id] and\ record.partner_ids.ids == [self.partner_03.id]: message += record self.assertEqual(len(message.ids), 1) diff --git a/mail_optional_follower_notification/wizard/mail_compose_message.py b/mail_optional_follower_notification/wizard/mail_compose_message.py index 0153bfe650..d90bb4b7aa 100644 --- a/mail_optional_follower_notification/wizard/mail_compose_message.py +++ b/mail_optional_follower_notification/wizard/mail_compose_message.py @@ -2,7 +2,7 @@ # Copyright 2016 ACSONE SA/NV () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, fields, api +from odoo import models, fields, api class MailComposeMessage(models.TransientModel): diff --git a/mail_optional_follower_notification/wizard/mail_compose_message_view.xml b/mail_optional_follower_notification/wizard/mail_compose_message_view.xml index 62078101f6..b4ba519412 100644 --- a/mail_optional_follower_notification/wizard/mail_compose_message_view.xml +++ b/mail_optional_follower_notification/wizard/mail_compose_message_view.xml @@ -1,5 +1,5 @@ - + mail.compose.message.form (mail_optional_autofollow) @@ -15,4 +15,4 @@ - \ No newline at end of file + \ No newline at end of file From 78a284cd4dfe4a2ab8587b2ae35e6fc156324f91 Mon Sep 17 00:00:00 2001 From: "Adrien Peiffer (ACSONE)" Date: Mon, 24 Oct 2016 12:10:45 +0200 Subject: [PATCH 07/41] [FIX] Bad version --- mail_optional_follower_notification/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index 752029eec1..848dc736c3 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -11,7 +11,7 @@ 'Odoo Community Association (OCA)', 'website': "http://acsone.eu", 'category': 'Social Network', - 'version': '9.0.1.0.0', + 'version': '10.0.1.0.0', 'license': 'AGPL-3', 'depends': [ 'mail', From 9a50a64b1d118a963d90e2624c09348520bd8b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul=20=28ACSONE=29?= Date: Mon, 26 Dec 2016 14:55:56 +0100 Subject: [PATCH 08/41] [FIX] pep8 --- .../i18n/am.po | 48 +++++++++++++++++ .../i18n/ar.po | 48 +++++++++++++++++ .../i18n/bs.po | 48 +++++++++++++++++ .../i18n/ca.po | 29 +++++----- .../i18n/cs.po | 48 +++++++++++++++++ .../i18n/da.po | 48 +++++++++++++++++ .../i18n/en_GB.po | 48 +++++++++++++++++ .../i18n/es.po | 31 ++++++----- .../i18n/es_CR.po | 48 +++++++++++++++++ .../i18n/es_EC.po | 48 +++++++++++++++++ .../i18n/es_MX.po | 48 +++++++++++++++++ .../i18n/es_VE.po | 48 +++++++++++++++++ .../i18n/et.po | 48 +++++++++++++++++ .../i18n/fi.po | 48 +++++++++++++++++ .../i18n/fr.po | 53 +++++++++++++++++++ .../i18n/fr_CA.po | 48 +++++++++++++++++ .../i18n/gl.po | 48 +++++++++++++++++ .../i18n/hr.po | 49 +++++++++++++++++ .../i18n/hr_HR.po | 48 +++++++++++++++++ .../i18n/hu.po | 48 +++++++++++++++++ .../i18n/it.po | 53 +++++++++++++++++++ .../i18n/ja.po | 48 +++++++++++++++++ .../i18n/lt.po | 48 +++++++++++++++++ .../i18n/lv.po | 48 +++++++++++++++++ .../i18n/mk.po | 48 +++++++++++++++++ .../i18n/mn.po | 48 +++++++++++++++++ .../i18n/nb.po | 48 +++++++++++++++++ .../i18n/nb_NO.po | 48 +++++++++++++++++ .../i18n/nl.po | 48 +++++++++++++++++ .../i18n/nl_BE.po | 48 +++++++++++++++++ .../i18n/nl_NL.po | 48 +++++++++++++++++ .../i18n/pl.po | 48 +++++++++++++++++ .../i18n/pt.po | 49 +++++++++++++++++ .../i18n/pt_BR.po | 29 +++++----- .../i18n/pt_PT.po | 48 +++++++++++++++++ .../i18n/ro.po | 48 +++++++++++++++++ .../i18n/ru.po | 48 +++++++++++++++++ .../i18n/sl.po | 34 ++++++------ .../i18n/sr@latin.po | 48 +++++++++++++++++ .../i18n/sv.po | 48 +++++++++++++++++ .../i18n/th.po | 48 +++++++++++++++++ .../i18n/tr.po | 48 +++++++++++++++++ .../i18n/tr_TR.po | 48 +++++++++++++++++ .../i18n/vi.po | 48 +++++++++++++++++ .../i18n/zh_CN.po | 48 +++++++++++++++++ .../i18n/zh_TW.po | 48 +++++++++++++++++ .../models/mail_message.py | 3 +- ...st_mail_optional_follower_notifications.py | 6 ++- 48 files changed, 2100 insertions(+), 60 deletions(-) create mode 100644 mail_optional_follower_notification/i18n/am.po create mode 100644 mail_optional_follower_notification/i18n/ar.po create mode 100644 mail_optional_follower_notification/i18n/bs.po create mode 100644 mail_optional_follower_notification/i18n/cs.po create mode 100644 mail_optional_follower_notification/i18n/da.po create mode 100644 mail_optional_follower_notification/i18n/en_GB.po create mode 100644 mail_optional_follower_notification/i18n/es_CR.po create mode 100644 mail_optional_follower_notification/i18n/es_EC.po create mode 100644 mail_optional_follower_notification/i18n/es_MX.po create mode 100644 mail_optional_follower_notification/i18n/es_VE.po create mode 100644 mail_optional_follower_notification/i18n/et.po create mode 100644 mail_optional_follower_notification/i18n/fi.po create mode 100644 mail_optional_follower_notification/i18n/fr.po create mode 100644 mail_optional_follower_notification/i18n/fr_CA.po create mode 100644 mail_optional_follower_notification/i18n/gl.po create mode 100644 mail_optional_follower_notification/i18n/hr.po create mode 100644 mail_optional_follower_notification/i18n/hr_HR.po create mode 100644 mail_optional_follower_notification/i18n/hu.po create mode 100644 mail_optional_follower_notification/i18n/it.po create mode 100644 mail_optional_follower_notification/i18n/ja.po create mode 100644 mail_optional_follower_notification/i18n/lt.po create mode 100644 mail_optional_follower_notification/i18n/lv.po create mode 100644 mail_optional_follower_notification/i18n/mk.po create mode 100644 mail_optional_follower_notification/i18n/mn.po create mode 100644 mail_optional_follower_notification/i18n/nb.po create mode 100644 mail_optional_follower_notification/i18n/nb_NO.po create mode 100644 mail_optional_follower_notification/i18n/nl.po create mode 100644 mail_optional_follower_notification/i18n/nl_BE.po create mode 100644 mail_optional_follower_notification/i18n/nl_NL.po create mode 100644 mail_optional_follower_notification/i18n/pl.po create mode 100644 mail_optional_follower_notification/i18n/pt.po create mode 100644 mail_optional_follower_notification/i18n/pt_PT.po create mode 100644 mail_optional_follower_notification/i18n/ro.po create mode 100644 mail_optional_follower_notification/i18n/ru.po create mode 100644 mail_optional_follower_notification/i18n/sr@latin.po create mode 100644 mail_optional_follower_notification/i18n/sv.po create mode 100644 mail_optional_follower_notification/i18n/th.po create mode 100644 mail_optional_follower_notification/i18n/tr.po create mode 100644 mail_optional_follower_notification/i18n/tr_TR.po create mode 100644 mail_optional_follower_notification/i18n/vi.po create mode 100644 mail_optional_follower_notification/i18n/zh_CN.po create mode 100644 mail_optional_follower_notification/i18n/zh_TW.po diff --git a/mail_optional_follower_notification/i18n/am.po b/mail_optional_follower_notification/i18n/am.po new file mode 100644 index 0000000000..9dca0933df --- /dev/null +++ b/mail_optional_follower_notification/i18n/am.po @@ -0,0 +1,48 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_optional_follower_notification +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-05-17 01:02+0000\n" +"PO-Revision-Date: 2017-05-17 01:02+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Amharic (https://www.transifex.com/oca/teams/23907/am/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: am\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: mail_optional_follower_notification +#: model:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_inherit_form +msgid "" +" Date: Mon, 4 Dec 2017 17:21:55 +0100 Subject: [PATCH 09/41] [IMP] Hide the checkbox for the mass mailing in mail_optional_follower_notification and mail_optional_autofollow --- .../wizard/mail_compose_message_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mail_optional_follower_notification/wizard/mail_compose_message_view.xml b/mail_optional_follower_notification/wizard/mail_compose_message_view.xml index b4ba519412..53b3a55686 100644 --- a/mail_optional_follower_notification/wizard/mail_compose_message_view.xml +++ b/mail_optional_follower_notification/wizard/mail_compose_message_view.xml @@ -7,7 +7,7 @@ - + - Warning : Followers will not be notified but they can access the notification directly from the document (if they are allowed to) From c0e2f56360ed10b0e675f3102de32902b357c8fd Mon Sep 17 00:00:00 2001 From: "Adrien Peiffer (ACSONE)" Date: Fri, 20 Oct 2017 17:42:56 +0200 Subject: [PATCH 10/41] [FIX] mail_optional_follower_notification: Check force_partners_to_notify instead of notify_followers. Without this commit, followers are NEVER notified when a message is directly posted on the tracker (without click to open the mail compose message form) --- .../__manifest__.py | 2 +- .../i18n/am.po | 12 ++--- .../i18n/ar.po | 15 +++--- .../i18n/bg.po | 48 ++++++++++++++++++ .../i18n/bs.po | 15 +++--- .../i18n/ca.po | 12 ++--- .../i18n/cs.po | 12 ++--- .../i18n/da.po | 12 ++--- .../i18n/de.po | 33 +++++++------ .../i18n/el_GR.po | 49 +++++++++++++++++++ .../i18n/en.po | 31 +++++++----- .../i18n/en_GB.po | 15 +++--- .../i18n/es.po | 12 ++--- .../i18n/es_CO.po | 23 +++++---- .../i18n/es_CR.po | 15 +++--- .../i18n/es_EC.po | 15 +++--- .../i18n/es_MX.po | 15 +++--- .../i18n/es_VE.po | 15 +++--- .../i18n/et.po | 12 ++--- .../i18n/eu.po | 48 ++++++++++++++++++ .../i18n/fi.po | 12 ++--- .../i18n/fr.po | 20 ++++---- .../i18n/fr_CA.po | 15 +++--- .../i18n/fr_CH.po | 49 +++++++++++++++++++ .../i18n/gl.po | 12 ++--- .../i18n/hr.po | 15 +++--- .../i18n/hr_HR.po | 18 ++++--- .../i18n/hu.po | 12 ++--- .../i18n/it.po | 16 +++--- .../i18n/ja.po | 12 ++--- .../i18n/lt.po | 15 +++--- .../i18n/lv.po | 15 +++--- .../mail_optional_follower_notification.pot | 40 +++++++++++++++ .../i18n/mk.po | 12 ++--- .../i18n/mn.po | 12 ++--- .../i18n/nb.po | 15 +++--- .../i18n/nb_NO.po | 15 +++--- .../i18n/nl.po | 12 ++--- .../i18n/nl_BE.po | 15 +++--- .../i18n/nl_NL.po | 15 +++--- .../i18n/pl.po | 16 +++--- .../i18n/pt.po | 12 ++--- .../i18n/pt_BR.po | 15 +++--- .../i18n/pt_PT.po | 15 +++--- .../i18n/ro.po | 15 +++--- .../i18n/ru.po | 16 +++--- .../i18n/sk.po | 48 ++++++++++++++++++ .../i18n/sl.po | 15 +++--- .../i18n/sr@latin.po | 18 ++++--- .../i18n/sv.po | 12 ++--- .../i18n/th.po | 12 ++--- .../i18n/tr.po | 12 ++--- .../i18n/tr_TR.po | 21 ++++---- .../i18n/vi.po | 12 ++--- .../i18n/zh_CN.po | 15 +++--- .../i18n/zh_TW.po | 15 +++--- .../models/mail_message.py | 5 +- 57 files changed, 680 insertions(+), 352 deletions(-) create mode 100644 mail_optional_follower_notification/i18n/bg.po create mode 100644 mail_optional_follower_notification/i18n/el_GR.po create mode 100644 mail_optional_follower_notification/i18n/eu.po create mode 100644 mail_optional_follower_notification/i18n/fr_CH.po create mode 100644 mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot create mode 100644 mail_optional_follower_notification/i18n/sk.po diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index 848dc736c3..3453dec524 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -11,7 +11,7 @@ 'Odoo Community Association (OCA)', 'website': "http://acsone.eu", 'category': 'Social Network', - 'version': '10.0.1.0.0', + 'version': '10.0.1.0.1', 'license': 'AGPL-3', 'depends': [ 'mail', diff --git a/mail_optional_follower_notification/i18n/am.po b/mail_optional_follower_notification/i18n/am.po index 9dca0933df..e6e60ce9ea 100644 --- a/mail_optional_follower_notification/i18n/am.po +++ b/mail_optional_follower_notification/i18n/am.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * mail_optional_follower_notification -# +# # Translators: # OCA Transbot , 2017 msgid "" @@ -12,19 +12,19 @@ msgstr "" "PO-Revision-Date: 2017-05-17 01:02+0000\n" "Last-Translator: OCA Transbot , 2017\n" "Language-Team: Amharic (https://www.transifex.com/oca/teams/23907/am/)\n" +"Language: am\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: am\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: mail_optional_follower_notification #: model:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_inherit_form msgid "" -" Date: Sat, 30 Jun 2018 02:05:18 +0200 Subject: [PATCH 11/41] [FIX] README.rst syntax --- mail_optional_follower_notification/README.rst | 2 -- mail_optional_follower_notification/i18n/am.po | 1 + mail_optional_follower_notification/i18n/ar.po | 1 + mail_optional_follower_notification/i18n/bg.po | 1 + mail_optional_follower_notification/i18n/bs.po | 1 + mail_optional_follower_notification/i18n/ca.po | 1 + mail_optional_follower_notification/i18n/cs.po | 1 + mail_optional_follower_notification/i18n/da.po | 1 + mail_optional_follower_notification/i18n/de.po | 1 + mail_optional_follower_notification/i18n/el_GR.po | 1 + mail_optional_follower_notification/i18n/en.po | 1 + mail_optional_follower_notification/i18n/en_GB.po | 1 + mail_optional_follower_notification/i18n/es.po | 1 + mail_optional_follower_notification/i18n/es_CO.po | 1 + mail_optional_follower_notification/i18n/es_CR.po | 1 + mail_optional_follower_notification/i18n/es_EC.po | 1 + mail_optional_follower_notification/i18n/es_MX.po | 1 + mail_optional_follower_notification/i18n/es_VE.po | 1 + mail_optional_follower_notification/i18n/et.po | 1 + mail_optional_follower_notification/i18n/eu.po | 1 + mail_optional_follower_notification/i18n/fi.po | 1 + mail_optional_follower_notification/i18n/fr.po | 1 + mail_optional_follower_notification/i18n/fr_CA.po | 1 + mail_optional_follower_notification/i18n/fr_CH.po | 1 + mail_optional_follower_notification/i18n/gl.po | 1 + mail_optional_follower_notification/i18n/hr.po | 1 + mail_optional_follower_notification/i18n/hr_HR.po | 1 + mail_optional_follower_notification/i18n/hu.po | 1 + mail_optional_follower_notification/i18n/it.po | 1 + mail_optional_follower_notification/i18n/ja.po | 1 + mail_optional_follower_notification/i18n/lt.po | 1 + mail_optional_follower_notification/i18n/lv.po | 1 + .../i18n/mail_optional_follower_notification.pot | 1 + mail_optional_follower_notification/i18n/mk.po | 1 + mail_optional_follower_notification/i18n/mn.po | 1 + mail_optional_follower_notification/i18n/nb.po | 1 + mail_optional_follower_notification/i18n/nb_NO.po | 1 + mail_optional_follower_notification/i18n/nl.po | 1 + mail_optional_follower_notification/i18n/nl_BE.po | 1 + mail_optional_follower_notification/i18n/nl_NL.po | 1 + mail_optional_follower_notification/i18n/pl.po | 1 + mail_optional_follower_notification/i18n/pt.po | 1 + mail_optional_follower_notification/i18n/pt_BR.po | 1 + mail_optional_follower_notification/i18n/pt_PT.po | 1 + mail_optional_follower_notification/i18n/ro.po | 1 + mail_optional_follower_notification/i18n/ru.po | 1 + mail_optional_follower_notification/i18n/sk.po | 1 + mail_optional_follower_notification/i18n/sl.po | 1 + mail_optional_follower_notification/i18n/sr@latin.po | 1 + mail_optional_follower_notification/i18n/sv.po | 1 + mail_optional_follower_notification/i18n/th.po | 1 + mail_optional_follower_notification/i18n/tr.po | 1 + mail_optional_follower_notification/i18n/tr_TR.po | 1 + mail_optional_follower_notification/i18n/vi.po | 1 + mail_optional_follower_notification/i18n/zh_CN.po | 1 + mail_optional_follower_notification/i18n/zh_TW.po | 1 + 56 files changed, 55 insertions(+), 2 deletions(-) diff --git a/mail_optional_follower_notification/README.rst b/mail_optional_follower_notification/README.rst index 0998cc9d22..83f4f501a3 100644 --- a/mail_optional_follower_notification/README.rst +++ b/mail_optional_follower_notification/README.rst @@ -27,8 +27,6 @@ This field it's initialized to true to keep the standard behavior. :alt: Try me on Runbot :target: https://runbot.odoo-community.org/runbot/205/10.0 - * https://www.odoo.com/forum/help-1 - Bug Tracker =========== diff --git a/mail_optional_follower_notification/i18n/am.po b/mail_optional_follower_notification/i18n/am.po index e6e60ce9ea..65c4e856e4 100644 --- a/mail_optional_follower_notification/i18n/am.po +++ b/mail_optional_follower_notification/i18n/am.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/ar.po b/mail_optional_follower_notification/i18n/ar.po index a08c3cf43a..8c2eaf45b6 100644 --- a/mail_optional_follower_notification/i18n/ar.po +++ b/mail_optional_follower_notification/i18n/ar.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/bg.po b/mail_optional_follower_notification/i18n/bg.po index 3c8b8e1fb7..6c9b2157f3 100644 --- a/mail_optional_follower_notification/i18n/bg.po +++ b/mail_optional_follower_notification/i18n/bg.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/bs.po b/mail_optional_follower_notification/i18n/bs.po index 4ecf33ae35..326a8d5e02 100644 --- a/mail_optional_follower_notification/i18n/bs.po +++ b/mail_optional_follower_notification/i18n/bs.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/ca.po b/mail_optional_follower_notification/i18n/ca.po index 94b0c60efc..5510920f73 100644 --- a/mail_optional_follower_notification/i18n/ca.po +++ b/mail_optional_follower_notification/i18n/ca.po @@ -39,6 +39,7 @@ msgstr "Missatge" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/cs.po b/mail_optional_follower_notification/i18n/cs.po index a88eeba3c0..69b81513e3 100644 --- a/mail_optional_follower_notification/i18n/cs.po +++ b/mail_optional_follower_notification/i18n/cs.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/da.po b/mail_optional_follower_notification/i18n/da.po index d6324839cc..09f3120cc6 100644 --- a/mail_optional_follower_notification/i18n/da.po +++ b/mail_optional_follower_notification/i18n/da.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/de.po b/mail_optional_follower_notification/i18n/de.po index d56f6c920a..2c539228aa 100644 --- a/mail_optional_follower_notification/i18n/de.po +++ b/mail_optional_follower_notification/i18n/de.po @@ -39,6 +39,7 @@ msgstr "Nachricht" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/el_GR.po b/mail_optional_follower_notification/i18n/el_GR.po index 7bcbca39ca..e06ce956d1 100644 --- a/mail_optional_follower_notification/i18n/el_GR.po +++ b/mail_optional_follower_notification/i18n/el_GR.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/en.po b/mail_optional_follower_notification/i18n/en.po index e2ff34b404..fd79215ea8 100644 --- a/mail_optional_follower_notification/i18n/en.po +++ b/mail_optional_follower_notification/i18n/en.po @@ -42,6 +42,7 @@ msgstr "Message" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "Notify followers" diff --git a/mail_optional_follower_notification/i18n/en_GB.po b/mail_optional_follower_notification/i18n/en_GB.po index a678af0737..51d90a134f 100644 --- a/mail_optional_follower_notification/i18n/en_GB.po +++ b/mail_optional_follower_notification/i18n/en_GB.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/es.po b/mail_optional_follower_notification/i18n/es.po index 3c5b86142d..f66ef0f762 100644 --- a/mail_optional_follower_notification/i18n/es.po +++ b/mail_optional_follower_notification/i18n/es.po @@ -39,6 +39,7 @@ msgstr "Mensaje" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/es_CO.po b/mail_optional_follower_notification/i18n/es_CO.po index cac3c9e0db..7c70103191 100644 --- a/mail_optional_follower_notification/i18n/es_CO.po +++ b/mail_optional_follower_notification/i18n/es_CO.po @@ -39,6 +39,7 @@ msgstr "Mensaje" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/es_CR.po b/mail_optional_follower_notification/i18n/es_CR.po index 53462b2203..42985d35fe 100644 --- a/mail_optional_follower_notification/i18n/es_CR.po +++ b/mail_optional_follower_notification/i18n/es_CR.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/es_EC.po b/mail_optional_follower_notification/i18n/es_EC.po index 75cbd27d74..0ff5e1204d 100644 --- a/mail_optional_follower_notification/i18n/es_EC.po +++ b/mail_optional_follower_notification/i18n/es_EC.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/es_MX.po b/mail_optional_follower_notification/i18n/es_MX.po index 6b14a50ce9..b95218149f 100644 --- a/mail_optional_follower_notification/i18n/es_MX.po +++ b/mail_optional_follower_notification/i18n/es_MX.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/es_VE.po b/mail_optional_follower_notification/i18n/es_VE.po index 212297d009..50dc7c6a72 100644 --- a/mail_optional_follower_notification/i18n/es_VE.po +++ b/mail_optional_follower_notification/i18n/es_VE.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/et.po b/mail_optional_follower_notification/i18n/et.po index 0405db491e..765e4df930 100644 --- a/mail_optional_follower_notification/i18n/et.po +++ b/mail_optional_follower_notification/i18n/et.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/eu.po b/mail_optional_follower_notification/i18n/eu.po index ca08d61da3..7c3327c4e8 100644 --- a/mail_optional_follower_notification/i18n/eu.po +++ b/mail_optional_follower_notification/i18n/eu.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/fi.po b/mail_optional_follower_notification/i18n/fi.po index 6cb4044de7..2946b1e1e2 100644 --- a/mail_optional_follower_notification/i18n/fi.po +++ b/mail_optional_follower_notification/i18n/fi.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/fr.po b/mail_optional_follower_notification/i18n/fr.po index b642fad0fb..9a9b87a438 100644 --- a/mail_optional_follower_notification/i18n/fr.po +++ b/mail_optional_follower_notification/i18n/fr.po @@ -44,6 +44,7 @@ msgstr "Message" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "Notifier les abonnés" diff --git a/mail_optional_follower_notification/i18n/fr_CA.po b/mail_optional_follower_notification/i18n/fr_CA.po index c8e6016d60..34c6c9ffb3 100644 --- a/mail_optional_follower_notification/i18n/fr_CA.po +++ b/mail_optional_follower_notification/i18n/fr_CA.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/fr_CH.po b/mail_optional_follower_notification/i18n/fr_CH.po index 2d553d9550..446c4fba1a 100644 --- a/mail_optional_follower_notification/i18n/fr_CH.po +++ b/mail_optional_follower_notification/i18n/fr_CH.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/gl.po b/mail_optional_follower_notification/i18n/gl.po index e361ec3e01..500f8e6982 100644 --- a/mail_optional_follower_notification/i18n/gl.po +++ b/mail_optional_follower_notification/i18n/gl.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/hr.po b/mail_optional_follower_notification/i18n/hr.po index c8fba10635..ccb4ceb4fe 100644 --- a/mail_optional_follower_notification/i18n/hr.po +++ b/mail_optional_follower_notification/i18n/hr.po @@ -41,6 +41,7 @@ msgstr "Poruka" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/hr_HR.po b/mail_optional_follower_notification/i18n/hr_HR.po index c5379a393b..dc5f867067 100644 --- a/mail_optional_follower_notification/i18n/hr_HR.po +++ b/mail_optional_follower_notification/i18n/hr_HR.po @@ -41,6 +41,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/hu.po b/mail_optional_follower_notification/i18n/hu.po index d381d51cb2..2bdff7b56d 100644 --- a/mail_optional_follower_notification/i18n/hu.po +++ b/mail_optional_follower_notification/i18n/hu.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/it.po b/mail_optional_follower_notification/i18n/it.po index 84f2c28515..1e900ee0b1 100644 --- a/mail_optional_follower_notification/i18n/it.po +++ b/mail_optional_follower_notification/i18n/it.po @@ -44,6 +44,7 @@ msgstr "Messaggio" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "Notifica Follower" diff --git a/mail_optional_follower_notification/i18n/ja.po b/mail_optional_follower_notification/i18n/ja.po index 367e00b0a9..d484ec2113 100644 --- a/mail_optional_follower_notification/i18n/ja.po +++ b/mail_optional_follower_notification/i18n/ja.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/lt.po b/mail_optional_follower_notification/i18n/lt.po index 82576c512a..982ce7ed2c 100644 --- a/mail_optional_follower_notification/i18n/lt.po +++ b/mail_optional_follower_notification/i18n/lt.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/lv.po b/mail_optional_follower_notification/i18n/lv.po index ccd999dad0..e6bb37d1c6 100644 --- a/mail_optional_follower_notification/i18n/lv.po +++ b/mail_optional_follower_notification/i18n/lv.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot b/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot index 322da7ca5e..dd99f5e506 100644 --- a/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot +++ b/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot @@ -30,6 +30,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/mk.po b/mail_optional_follower_notification/i18n/mk.po index 11593a7e49..1e38937eaa 100644 --- a/mail_optional_follower_notification/i18n/mk.po +++ b/mail_optional_follower_notification/i18n/mk.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/mn.po b/mail_optional_follower_notification/i18n/mn.po index 4732acf6d4..fbfa5d9c2c 100644 --- a/mail_optional_follower_notification/i18n/mn.po +++ b/mail_optional_follower_notification/i18n/mn.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/nb.po b/mail_optional_follower_notification/i18n/nb.po index b5acdc91f6..9ed4faa287 100644 --- a/mail_optional_follower_notification/i18n/nb.po +++ b/mail_optional_follower_notification/i18n/nb.po @@ -40,6 +40,7 @@ msgstr "Melding" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/nb_NO.po b/mail_optional_follower_notification/i18n/nb_NO.po index 436526a525..bba36669b6 100644 --- a/mail_optional_follower_notification/i18n/nb_NO.po +++ b/mail_optional_follower_notification/i18n/nb_NO.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/nl.po b/mail_optional_follower_notification/i18n/nl.po index 95c7a60795..b9e417b9b3 100644 --- a/mail_optional_follower_notification/i18n/nl.po +++ b/mail_optional_follower_notification/i18n/nl.po @@ -39,6 +39,7 @@ msgstr "Bericht" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/nl_BE.po b/mail_optional_follower_notification/i18n/nl_BE.po index 0f27a2772b..cf0ecce511 100644 --- a/mail_optional_follower_notification/i18n/nl_BE.po +++ b/mail_optional_follower_notification/i18n/nl_BE.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/nl_NL.po b/mail_optional_follower_notification/i18n/nl_NL.po index 37f47ddb63..2ba2d0792e 100644 --- a/mail_optional_follower_notification/i18n/nl_NL.po +++ b/mail_optional_follower_notification/i18n/nl_NL.po @@ -40,6 +40,7 @@ msgstr "Bericht" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/pl.po b/mail_optional_follower_notification/i18n/pl.po index a178d667a9..9f2abc32ce 100644 --- a/mail_optional_follower_notification/i18n/pl.po +++ b/mail_optional_follower_notification/i18n/pl.po @@ -41,6 +41,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/pt.po b/mail_optional_follower_notification/i18n/pt.po index 33bff2cc4c..710246bb00 100644 --- a/mail_optional_follower_notification/i18n/pt.po +++ b/mail_optional_follower_notification/i18n/pt.po @@ -40,6 +40,7 @@ msgstr "Mensagem" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/pt_BR.po b/mail_optional_follower_notification/i18n/pt_BR.po index b4671e4fac..8b2a106e70 100644 --- a/mail_optional_follower_notification/i18n/pt_BR.po +++ b/mail_optional_follower_notification/i18n/pt_BR.po @@ -40,6 +40,7 @@ msgstr "Mensagem" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/pt_PT.po b/mail_optional_follower_notification/i18n/pt_PT.po index cbec58e7f8..d5c2c43b2e 100644 --- a/mail_optional_follower_notification/i18n/pt_PT.po +++ b/mail_optional_follower_notification/i18n/pt_PT.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/ro.po b/mail_optional_follower_notification/i18n/ro.po index 0ec39b3a06..1824ca1716 100644 --- a/mail_optional_follower_notification/i18n/ro.po +++ b/mail_optional_follower_notification/i18n/ro.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/ru.po b/mail_optional_follower_notification/i18n/ru.po index 54bdea3641..0acb4207d3 100644 --- a/mail_optional_follower_notification/i18n/ru.po +++ b/mail_optional_follower_notification/i18n/ru.po @@ -41,6 +41,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/sk.po b/mail_optional_follower_notification/i18n/sk.po index 9a3a7344ae..0134375ada 100644 --- a/mail_optional_follower_notification/i18n/sk.po +++ b/mail_optional_follower_notification/i18n/sk.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/sl.po b/mail_optional_follower_notification/i18n/sl.po index a5ebeac5fc..f76bd11940 100644 --- a/mail_optional_follower_notification/i18n/sl.po +++ b/mail_optional_follower_notification/i18n/sl.po @@ -40,6 +40,7 @@ msgstr "Sporočilo" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "Obvesti sledilce" diff --git a/mail_optional_follower_notification/i18n/sr@latin.po b/mail_optional_follower_notification/i18n/sr@latin.po index 92148b4aaf..57756a66d4 100644 --- a/mail_optional_follower_notification/i18n/sr@latin.po +++ b/mail_optional_follower_notification/i18n/sr@latin.po @@ -41,6 +41,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/sv.po b/mail_optional_follower_notification/i18n/sv.po index 7397f8b320..2dfcb7542e 100644 --- a/mail_optional_follower_notification/i18n/sv.po +++ b/mail_optional_follower_notification/i18n/sv.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/th.po b/mail_optional_follower_notification/i18n/th.po index 57abf5a52a..e5b7d63c3b 100644 --- a/mail_optional_follower_notification/i18n/th.po +++ b/mail_optional_follower_notification/i18n/th.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/tr.po b/mail_optional_follower_notification/i18n/tr.po index 6ea3d2d34c..467160fcb7 100644 --- a/mail_optional_follower_notification/i18n/tr.po +++ b/mail_optional_follower_notification/i18n/tr.po @@ -39,6 +39,7 @@ msgstr "İleti" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/tr_TR.po b/mail_optional_follower_notification/i18n/tr_TR.po index 3ff3be0f67..f5ff456956 100644 --- a/mail_optional_follower_notification/i18n/tr_TR.po +++ b/mail_optional_follower_notification/i18n/tr_TR.po @@ -40,6 +40,7 @@ msgstr "İleti" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/vi.po b/mail_optional_follower_notification/i18n/vi.po index d0a8c31007..f4036cb32c 100644 --- a/mail_optional_follower_notification/i18n/vi.po +++ b/mail_optional_follower_notification/i18n/vi.po @@ -39,6 +39,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/zh_CN.po b/mail_optional_follower_notification/i18n/zh_CN.po index 051a82cd97..d6d986447f 100644 --- a/mail_optional_follower_notification/i18n/zh_CN.po +++ b/mail_optional_follower_notification/i18n/zh_CN.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" diff --git a/mail_optional_follower_notification/i18n/zh_TW.po b/mail_optional_follower_notification/i18n/zh_TW.po index b826f0f7f5..526b9474c4 100644 --- a/mail_optional_follower_notification/i18n/zh_TW.po +++ b/mail_optional_follower_notification/i18n/zh_TW.po @@ -40,6 +40,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message_notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_forward_compose_message_notify_followers msgid "Notify followers" msgstr "" From 48fbf78cbe17313cf5ccb3b9c5e14c87194953d6 Mon Sep 17 00:00:00 2001 From: Maria Sparenberg Date: Fri, 14 Dec 2018 14:33:22 +0000 Subject: [PATCH 12/41] Translated using Weblate (German) Currently translated at 100.0% (5 of 5 strings) Translation: social-10.0/social-10.0-mail_optional_follower_notification Translate-URL: https://translation.odoo-community.org/projects/social-10-0/social-10-0-mail_optional_follower_notification/de/ --- mail_optional_follower_notification/i18n/de.po | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mail_optional_follower_notification/i18n/de.po b/mail_optional_follower_notification/i18n/de.po index 2c539228aa..68160471e5 100644 --- a/mail_optional_follower_notification/i18n/de.po +++ b/mail_optional_follower_notification/i18n/de.po @@ -9,14 +9,15 @@ msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-01-16 03:47+0000\n" -"PO-Revision-Date: 2018-01-16 03:47+0000\n" -"Last-Translator: OCA Transbot , 2017\n" +"PO-Revision-Date: 2018-12-15 14:58+0000\n" +"Last-Translator: Maria Sparenberg \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" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.3\n" #. module: mail_optional_follower_notification #: model:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_inherit_form @@ -26,6 +27,10 @@ msgid "" "access the notification directly from the document (if they are allowed to)" msgstr "" +"`_. 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. +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 +~~~~~~~ + +* ACSONE SA/NV + Contributors ------------- +~~~~~~~~~~~~ * Adrien Peiffer * Laurent Mignon +* Andrea Stirpe -Maintainer ----------- +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. -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/social `_ project on GitHub. -To contribute to this module, please visit https://odoo-community.org. +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_optional_follower_notification/__init__.py b/mail_optional_follower_notification/__init__.py index 98aa84d409..93aa2c1f84 100644 --- a/mail_optional_follower_notification/__init__.py +++ b/mail_optional_follower_notification/__init__.py @@ -1,6 +1,4 @@ -# -*- coding: utf-8 -*- -# Copyright 2016 ACSONE SA/NV () -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from . import models from . import wizard diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index 3453dec524..d0b5496394 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -1,22 +1,18 @@ -# -*- coding: utf-8 -*- # Copyright 2016 ACSONE SA/NV () -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { - 'name': "Mail optional follower notification", - - 'summary': """ - Choose if you want to automatically notify followers - on mail.compose.message""", - 'author': 'ACSONE SA/NV,' - 'Odoo Community Association (OCA)', - 'website': "http://acsone.eu", - 'category': 'Social Network', - 'version': '10.0.1.0.1', - 'license': 'AGPL-3', - 'depends': [ - 'mail', + "name": "Mail optional follower notification", + "summary": "Choose to notify followers on mail.compose.message", + "author": "ACSONE SA/NV," + "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/social", + "category": "Social Network", + "version": "12.0.1.0.0", + "license": "AGPL-3", + "depends": [ + "mail", ], - 'data': [ - 'wizard/mail_compose_message_view.xml', + "data": [ + "wizard/mail_compose_message_view.xml", ], } diff --git a/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot b/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot index dd99f5e506..15746f4d24 100644 --- a/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot +++ b/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -14,10 +14,15 @@ msgstr "" "Plural-Forms: \n" #. module: mail_optional_follower_notification -#: model:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_inherit_form +#: model_terms:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_form msgid ") -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import models, api @@ -8,13 +7,16 @@ class ResPartner(models.Model): _inherit = 'res.partner' - @api.multi - def _notify(self, message, force_send=False, send_after_commit=True, - user_signature=True): + @api.model + def _notify(self, message, rdata, record, force_send=False, + send_after_commit=True, model_description=False, + mail_auto_delete=True): if self.env.context.get('force_partners_to_notify'): partners_to_notify =\ self.env.context.get('force_partners_to_notify') - self = self.filtered(lambda p: p.id in partners_to_notify) - super(ResPartner, self)._notify( - message, force_send=force_send, - send_after_commit=send_after_commit, user_signature=user_signature) + record = self.filtered(lambda p: p.id in partners_to_notify) + return super()._notify( + message, rdata, record, + force_send=force_send, send_after_commit=send_after_commit, + model_description=model_description, + mail_auto_delete=mail_auto_delete) diff --git a/mail_optional_follower_notification/readme/CONTRIBUTORS.rst b/mail_optional_follower_notification/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..bea4300dca --- /dev/null +++ b/mail_optional_follower_notification/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Adrien Peiffer +* Laurent Mignon +* Andrea Stirpe diff --git a/mail_optional_follower_notification/readme/DESCRIPTION.rst b/mail_optional_follower_notification/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..04bb275cd2 --- /dev/null +++ b/mail_optional_follower_notification/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +This module adds the possibility to choose if you want to automatically +notify followers on mail.compose.message. By default, Odoo notify +automatically all followers. diff --git a/mail_optional_follower_notification/readme/USAGE.rst b/mail_optional_follower_notification/readme/USAGE.rst new file mode 100644 index 0000000000..bf0bbb3db0 --- /dev/null +++ b/mail_optional_follower_notification/readme/USAGE.rst @@ -0,0 +1,10 @@ +To use this module, you need to use the checkbox near "Followers of the +document and" on mail.compose.message: + +This field it's initialized to true to keep the standard behavior. + +.. figure:: static/description/optional_follower_001.png + :alt: Default checkbox + +.. figure:: static/description/optional_follower_002.png + :alt: Checkbox to avoid to notify automatically followers diff --git a/mail_optional_follower_notification/static/description/index.html b/mail_optional_follower_notification/static/description/index.html new file mode 100644 index 0000000000..dd90ad2805 --- /dev/null +++ b/mail_optional_follower_notification/static/description/index.html @@ -0,0 +1,436 @@ + + + + + + +Mail optional follower notification + + + +

+

Mail optional follower notification

+ + +

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

+

This module adds the possibility to choose if you want to automatically +notify followers on mail.compose.message. By default, Odoo notify +automatically all followers.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to use the checkbox near “Followers of the +document and” on mail.compose.message:

+

This field it’s initialized to true to keep the standard behavior.

+
+Default checkbox +
+
+Checkbox to avoid to notify automatically followers +
+
+
+

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

+
    +
  • ACSONE SA/NV
  • +
+
+
+

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/social project on GitHub.

+

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

+
+
+
+ + diff --git a/mail_optional_follower_notification/tests/__init__.py b/mail_optional_follower_notification/tests/__init__.py index 2a6791af4a..17a2936a28 100644 --- a/mail_optional_follower_notification/tests/__init__.py +++ b/mail_optional_follower_notification/tests/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# Copyright 2016 ACSONE SA/NV () -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from . import test_mail_optional_follower_notifications diff --git a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py index 67b26afff2..724116a60a 100644 --- a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py +++ b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py @@ -1,6 +1,5 @@ -# -*- coding: utf-8 -*- # Copyright 2016 ACSONE SA/NV () -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo.tests import common @@ -8,7 +7,7 @@ class TestMailOptionalFollowernotifications(common.TransactionCase): def setUp(self): - super(TestMailOptionalFollowernotifications, self).setUp() + super().setUp() self.partner_obj = self.env['res.partner'] self.partner_01 = self.env.ref('base.res_partner_2') self.demo_user = self.env.ref('base.user_demo') @@ -22,7 +21,8 @@ def test_send_email_optional_follower_notifications(self): 'default_composition_mode': 'comment', }) mail_compose = self.env['mail.compose.message'] - self.partner_01.message_subscribe_users(user_ids=[self.demo_user.id]) + self.partner_01.message_subscribe( + partner_ids=[self.demo_user.partner_id.id]) values = mail_compose.with_context(ctx)\ .onchange_template_id(False, 'comment', 'res.partner', self.partner_01.id)['value'] diff --git a/mail_optional_follower_notification/wizard/__init__.py b/mail_optional_follower_notification/wizard/__init__.py index 56c0250a08..2d9c29a8b1 100644 --- a/mail_optional_follower_notification/wizard/__init__.py +++ b/mail_optional_follower_notification/wizard/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# Copyright 2016 ACSONE SA/NV () -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from . import mail_compose_message diff --git a/mail_optional_follower_notification/wizard/mail_compose_message.py b/mail_optional_follower_notification/wizard/mail_compose_message.py index d90bb4b7aa..25efe0df20 100644 --- a/mail_optional_follower_notification/wizard/mail_compose_message.py +++ b/mail_optional_follower_notification/wizard/mail_compose_message.py @@ -1,6 +1,5 @@ -# -*- coding: utf-8 -*- # Copyright 2016 ACSONE SA/NV () -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import models, fields, api @@ -12,9 +11,10 @@ class MailComposeMessage(models.TransientModel): @api.multi def send_mail(self, auto_commit=False): + ctx = self.env.context.copy() for wizard in self: - wizard = wizard.with_context( - notify_followers=wizard.notify_followers) + ctx['notify_followers'] = wizard.notify_followers + wizard = wizard.with_context(ctx) super(MailComposeMessage, wizard).send_mail( auto_commit=auto_commit) return {'type': 'ir.actions.act_window_close'} diff --git a/mail_optional_follower_notification/wizard/mail_compose_message_view.xml b/mail_optional_follower_notification/wizard/mail_compose_message_view.xml index 53b3a55686..b252a0ecbb 100644 --- a/mail_optional_follower_notification/wizard/mail_compose_message_view.xml +++ b/mail_optional_follower_notification/wizard/mail_compose_message_view.xml @@ -1,18 +1,17 @@ - - - mail.compose.message.form (mail_optional_autofollow) - mail.compose.message - - - - - - - - Warning : Followers will not be notified but they can access the notification directly from the document (if they are allowed to) - - - - - \ No newline at end of file + + + mail.compose.message + + + + + + + - Warning : Followers will not be notified but they can access the notification directly from the document (if they are allowed to) + + + + + From f4c3da23a9dd731cc530aadc5115a834036bfdf2 Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Fri, 6 Dec 2019 11:37:20 +0100 Subject: [PATCH 15/41] [IMP] mail_optional_follower_notification: black, isort --- .../__manifest__.py | 11 +--- .../models/mail_message.py | 35 +++++++---- .../models/res_partner.py | 32 ++++++---- ...st_mail_optional_follower_notifications.py | 62 ++++++++++--------- .../wizard/mail_compose_message.py | 11 ++-- 5 files changed, 84 insertions(+), 67 deletions(-) diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index d0b5496394..6c4769bda0 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -3,16 +3,11 @@ { "name": "Mail optional follower notification", "summary": "Choose to notify followers on mail.compose.message", - "author": "ACSONE SA/NV," - "Odoo Community Association (OCA)", + "author": "ACSONE SA/NV," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "category": "Social Network", "version": "12.0.1.0.0", "license": "AGPL-3", - "depends": [ - "mail", - ], - "data": [ - "wizard/mail_compose_message_view.xml", - ], + "depends": ["mail"], + "data": ["wizard/mail_compose_message_view.xml"], } diff --git a/mail_optional_follower_notification/models/mail_message.py b/mail_optional_follower_notification/models/mail_message.py index 7afe713087..4eeda7bc9f 100644 --- a/mail_optional_follower_notification/models/mail_message.py +++ b/mail_optional_follower_notification/models/mail_message.py @@ -1,32 +1,43 @@ # Copyright 2016 ACSONE SA/NV () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import models, api +from odoo import api, models class MailMessage(models.Model): - _inherit = 'mail.message' + _inherit = "mail.message" @api.model def create(self, values): ctx = self.env.context.copy() - if not ctx.get('notify_followers') and values.get('partner_ids'): + if not ctx.get("notify_followers") and values.get("partner_ids"): partner_list = self.resolve_2many_commands( - 'partner_ids', values.get('partner_ids'), fields=['id']) - ctx['force_partners_to_notify'] = [d['id'] for d in partner_list] + "partner_ids", values.get("partner_ids"), fields=["id"] + ) + ctx["force_partners_to_notify"] = [d["id"] for d in partner_list] return super(MailMessage, self.with_context(ctx)).create(values) @api.multi - def _notify(self, record, msg_vals, force_send=False, - send_after_commit=True, model_description=False, - mail_auto_delete=True): + def _notify( + self, + record, + msg_vals, + force_send=False, + send_after_commit=True, + model_description=False, + mail_auto_delete=True, + ): res = super()._notify( - record, msg_vals, force_send=force_send, + record, + msg_vals, + force_send=force_send, send_after_commit=send_after_commit, model_description=model_description, - mail_auto_delete=mail_auto_delete) - if self.env.context.get('force_partners_to_notify'): + mail_auto_delete=mail_auto_delete, + ) + if self.env.context.get("force_partners_to_notify"): # Needaction only for recipients self.needaction_partner_ids = [ - (6, 0, self.env.context.get('force_partners_to_notify'))] + (6, 0, self.env.context.get("force_partners_to_notify")) + ] return res diff --git a/mail_optional_follower_notification/models/res_partner.py b/mail_optional_follower_notification/models/res_partner.py index 6ca4f5e9c6..f91c52b9f6 100644 --- a/mail_optional_follower_notification/models/res_partner.py +++ b/mail_optional_follower_notification/models/res_partner.py @@ -1,22 +1,32 @@ # Copyright 2016 ACSONE SA/NV () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import models, api +from odoo import api, models class ResPartner(models.Model): - _inherit = 'res.partner' + _inherit = "res.partner" @api.model - def _notify(self, message, rdata, record, force_send=False, - send_after_commit=True, model_description=False, - mail_auto_delete=True): - if self.env.context.get('force_partners_to_notify'): - partners_to_notify =\ - self.env.context.get('force_partners_to_notify') + def _notify( + self, + message, + rdata, + record, + force_send=False, + send_after_commit=True, + model_description=False, + mail_auto_delete=True, + ): + if self.env.context.get("force_partners_to_notify"): + partners_to_notify = self.env.context.get("force_partners_to_notify") record = self.filtered(lambda p: p.id in partners_to_notify) return super()._notify( - message, rdata, record, - force_send=force_send, send_after_commit=send_after_commit, + message, + rdata, + record, + force_send=force_send, + send_after_commit=send_after_commit, model_description=model_description, - mail_auto_delete=mail_auto_delete) + mail_auto_delete=mail_auto_delete, + ) diff --git a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py index 724116a60a..224503d23f 100644 --- a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py +++ b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py @@ -5,53 +5,55 @@ class TestMailOptionalFollowernotifications(common.TransactionCase): - def setUp(self): super().setUp() - self.partner_obj = self.env['res.partner'] - self.partner_01 = self.env.ref('base.res_partner_2') - self.demo_user = self.env.ref('base.user_demo') + self.partner_obj = self.env["res.partner"] + self.partner_01 = self.env.ref("base.res_partner_2") + self.demo_user = self.env.ref("base.user_demo") self.partner_03 = self.demo_user.copy().partner_id def test_send_email_optional_follower_notifications(self): ctx = self.env.context.copy() - ctx.update({ - 'default_model': 'res.partner', - 'default_res_id': self.partner_01.id, - 'default_composition_mode': 'comment', - }) - mail_compose = self.env['mail.compose.message'] - self.partner_01.message_subscribe( - partner_ids=[self.demo_user.partner_id.id]) - values = mail_compose.with_context(ctx)\ - .onchange_template_id(False, 'comment', 'res.partner', - self.partner_01.id)['value'] - values['partner_ids'] = [(4, self.demo_user.partner_id.id), - (4, self.partner_03.id)] + ctx.update( + { + "default_model": "res.partner", + "default_res_id": self.partner_01.id, + "default_composition_mode": "comment", + } + ) + mail_compose = self.env["mail.compose.message"] + self.partner_01.message_subscribe(partner_ids=[self.demo_user.partner_id.id]) + values = mail_compose.with_context(ctx).onchange_template_id( + False, "comment", "res.partner", self.partner_01.id + )["value"] + values["partner_ids"] = [ + (4, self.demo_user.partner_id.id), + (4, self.partner_03.id), + ] compose_id = mail_compose.with_context(ctx).create(values) compose_id.with_context(ctx).send_mail() res = self.env["mail.message"].search( - [('model', '=', 'res.partner'), - ('res_id', '=', self.partner_01.id)]) + [("model", "=", "res.partner"), ("res_id", "=", self.partner_01.id)] + ) self.assertEqual(len(res.ids), 1) - message = self.env['mail.message'] + message = self.env["mail.message"] for record in res: - if record.notification_ids.mapped('res_partner_id').ids == \ - [self.partner_03.id] and \ - record.partner_ids.ids == [self.partner_03.id]: + if record.notification_ids.mapped("res_partner_id").ids == [ + self.partner_03.id + ] and record.partner_ids.ids == [self.partner_03.id]: message += record self.assertEqual(len(message.ids), 0) - values['partner_ids'] = [(6, 0, [self.partner_03.id])] + values["partner_ids"] = [(6, 0, [self.partner_03.id])] compose_id = mail_compose.with_context(ctx).create(values) compose_id.notify_followers = False compose_id.with_context(ctx).send_mail() res = self.env["mail.message"].search( - [('model', '=', 'res.partner'), - ('res_id', '=', self.partner_01.id)]) - message = self.env['mail.message'] + [("model", "=", "res.partner"), ("res_id", "=", self.partner_01.id)] + ) + message = self.env["mail.message"] for record in res: - if record.notification_ids.mapped('res_partner_id').ids == \ - [self.partner_03.id] and\ - record.partner_ids.ids == [self.partner_03.id]: + if record.notification_ids.mapped("res_partner_id").ids == [ + self.partner_03.id + ] and record.partner_ids.ids == [self.partner_03.id]: message += record self.assertEqual(len(message.ids), 1) diff --git a/mail_optional_follower_notification/wizard/mail_compose_message.py b/mail_optional_follower_notification/wizard/mail_compose_message.py index 25efe0df20..843c86f765 100644 --- a/mail_optional_follower_notification/wizard/mail_compose_message.py +++ b/mail_optional_follower_notification/wizard/mail_compose_message.py @@ -1,11 +1,11 @@ # Copyright 2016 ACSONE SA/NV () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import models, fields, api +from odoo import api, fields, models class MailComposeMessage(models.TransientModel): - _inherit = 'mail.compose.message' + _inherit = "mail.compose.message" notify_followers = fields.Boolean(default=True) @@ -13,8 +13,7 @@ class MailComposeMessage(models.TransientModel): def send_mail(self, auto_commit=False): ctx = self.env.context.copy() for wizard in self: - ctx['notify_followers'] = wizard.notify_followers + ctx["notify_followers"] = wizard.notify_followers wizard = wizard.with_context(ctx) - super(MailComposeMessage, wizard).send_mail( - auto_commit=auto_commit) - return {'type': 'ir.actions.act_window_close'} + super(MailComposeMessage, wizard).send_mail(auto_commit=auto_commit) + return {"type": "ir.actions.act_window_close"} From cab05b82c9a4bdee0f7d76ab40a7bc905b6489a0 Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Fri, 6 Dec 2019 11:49:27 +0100 Subject: [PATCH 16/41] [MIG] mail_optional_follower_notification: Migration to 13.0 --- .../__init__.py | 2 - .../__manifest__.py | 2 +- .../models/__init__.py | 5 +- .../models/mail_message.py | 43 ------- .../models/mail_thread.py | 25 ++++ .../models/res_partner.py | 32 ----- .../tests/__init__.py | 2 - ...st_mail_optional_follower_notifications.py | 119 +++++++++++------- .../wizard/mail_compose_message.py | 9 +- .../wizard/mail_compose_message_view.xml | 10 +- 10 files changed, 109 insertions(+), 140 deletions(-) delete mode 100644 mail_optional_follower_notification/models/mail_message.py create mode 100644 mail_optional_follower_notification/models/mail_thread.py delete mode 100644 mail_optional_follower_notification/models/res_partner.py diff --git a/mail_optional_follower_notification/__init__.py b/mail_optional_follower_notification/__init__.py index 93aa2c1f84..9b4296142f 100644 --- a/mail_optional_follower_notification/__init__.py +++ b/mail_optional_follower_notification/__init__.py @@ -1,4 +1,2 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - from . import models from . import wizard diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index 6c4769bda0..f55cd4bf4c 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -6,7 +6,7 @@ "author": "ACSONE SA/NV," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "category": "Social Network", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "license": "AGPL-3", "depends": ["mail"], "data": ["wizard/mail_compose_message_view.xml"], diff --git a/mail_optional_follower_notification/models/__init__.py b/mail_optional_follower_notification/models/__init__.py index b3d15f4601..b70a9f2d08 100644 --- a/mail_optional_follower_notification/models/__init__.py +++ b/mail_optional_follower_notification/models/__init__.py @@ -1,4 +1 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from . import mail_message -from . import res_partner +from . import mail_thread diff --git a/mail_optional_follower_notification/models/mail_message.py b/mail_optional_follower_notification/models/mail_message.py deleted file mode 100644 index 4eeda7bc9f..0000000000 --- a/mail_optional_follower_notification/models/mail_message.py +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright 2016 ACSONE SA/NV () -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import api, models - - -class MailMessage(models.Model): - _inherit = "mail.message" - - @api.model - def create(self, values): - ctx = self.env.context.copy() - if not ctx.get("notify_followers") and values.get("partner_ids"): - partner_list = self.resolve_2many_commands( - "partner_ids", values.get("partner_ids"), fields=["id"] - ) - ctx["force_partners_to_notify"] = [d["id"] for d in partner_list] - return super(MailMessage, self.with_context(ctx)).create(values) - - @api.multi - def _notify( - self, - record, - msg_vals, - force_send=False, - send_after_commit=True, - model_description=False, - mail_auto_delete=True, - ): - res = super()._notify( - record, - msg_vals, - force_send=force_send, - send_after_commit=send_after_commit, - model_description=model_description, - mail_auto_delete=mail_auto_delete, - ) - if self.env.context.get("force_partners_to_notify"): - # Needaction only for recipients - self.needaction_partner_ids = [ - (6, 0, self.env.context.get("force_partners_to_notify")) - ] - return res diff --git a/mail_optional_follower_notification/models/mail_thread.py b/mail_optional_follower_notification/models/mail_thread.py new file mode 100644 index 0000000000..db9dd9a86f --- /dev/null +++ b/mail_optional_follower_notification/models/mail_thread.py @@ -0,0 +1,25 @@ +# Copyright 2019 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class MailThread(models.AbstractModel): + _inherit = "mail.thread" + + def _notify_compute_recipients(self, message, msg_vals): + """ Compute recipients to notify based on subtype and followers. This + method returns data structured as expected for ``_notify_recipients``. """ + recipient_data = super()._notify_compute_recipients(message, msg_vals) + if not self.env.context.get("notify_followers", False): + # filter out all the followers + pids = ( + msg_vals.get("partner_ids", []) + if msg_vals + else message.sudo().partner_ids.ids + ) + recipient_data = { + "partners": [d for d in recipient_data["partners"] if d["id"] in pids], + "channels": [], + } + return recipient_data diff --git a/mail_optional_follower_notification/models/res_partner.py b/mail_optional_follower_notification/models/res_partner.py deleted file mode 100644 index f91c52b9f6..0000000000 --- a/mail_optional_follower_notification/models/res_partner.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2016 ACSONE SA/NV () -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import api, models - - -class ResPartner(models.Model): - _inherit = "res.partner" - - @api.model - def _notify( - self, - message, - rdata, - record, - force_send=False, - send_after_commit=True, - model_description=False, - mail_auto_delete=True, - ): - if self.env.context.get("force_partners_to_notify"): - partners_to_notify = self.env.context.get("force_partners_to_notify") - record = self.filtered(lambda p: p.id in partners_to_notify) - return super()._notify( - message, - rdata, - record, - force_send=force_send, - send_after_commit=send_after_commit, - model_description=model_description, - mail_auto_delete=mail_auto_delete, - ) diff --git a/mail_optional_follower_notification/tests/__init__.py b/mail_optional_follower_notification/tests/__init__.py index 17a2936a28..b58d6f27f3 100644 --- a/mail_optional_follower_notification/tests/__init__.py +++ b/mail_optional_follower_notification/tests/__init__.py @@ -1,3 +1 @@ -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - from . import test_mail_optional_follower_notifications diff --git a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py index 224503d23f..439e002cdd 100644 --- a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py +++ b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py @@ -1,59 +1,88 @@ -# Copyright 2016 ACSONE SA/NV () +# Copyright 2019 ACSONE SA/NV () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo.tests import common -class TestMailOptionalFollowernotifications(common.TransactionCase): - def setUp(self): - super().setUp() - self.partner_obj = self.env["res.partner"] - self.partner_01 = self.env.ref("base.res_partner_2") - self.demo_user = self.env.ref("base.user_demo") - self.partner_03 = self.demo_user.copy().partner_id - - def test_send_email_optional_follower_notifications(self): - ctx = self.env.context.copy() +class TestMailOptionalFollowernotifications(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.partner_obj = cls.env["res.partner"] + cls.partner_01 = cls.env.ref("base.res_partner_2") + demo_user = cls.env.ref("base.user_demo") + cls.partner_follower = demo_user.partner_id + cls.partner_no_follower = demo_user.copy().partner_id + cls.partner_01.message_subscribe(partner_ids=[cls.partner_follower.id]) + ctx = cls.env.context.copy() ctx.update( { "default_model": "res.partner", - "default_res_id": self.partner_01.id, + "default_res_id": cls.partner_01.id, "default_composition_mode": "comment", } ) - mail_compose = self.env["mail.compose.message"] - self.partner_01.message_subscribe(partner_ids=[self.demo_user.partner_id.id]) - values = mail_compose.with_context(ctx).onchange_template_id( - False, "comment", "res.partner", self.partner_01.id - )["value"] - values["partner_ids"] = [ - (4, self.demo_user.partner_id.id), - (4, self.partner_03.id), + cls.mail_compose_context = ctx + cls.MailCompose = cls.env["mail.compose.message"] + + def _send_mail(self, recipients, notify_followers): + old_messages = self.env["mail.message"].search([]) + values = self.MailCompose.with_context( + self.mail_compose_context + ).onchange_template_id(False, "comment", "res.partner", self.partner_01.id)[ + "value" ] - compose_id = mail_compose.with_context(ctx).create(values) - compose_id.with_context(ctx).send_mail() - res = self.env["mail.message"].search( - [("model", "=", "res.partner"), ("res_id", "=", self.partner_01.id)] + values["partner_ids"] = [(6, 0, recipients.ids)] + values["notify_followers"] = notify_followers + composer = self.MailCompose.with_context(self.mail_compose_context).create( + values + ) + composer.send_mail() + return self.env["mail.message"].search([]) - old_messages + + def test_1(self): + """ + Data: + One partner follower of partner_01 + Test case: + Send message to the follower and a non follower partner + Expected result: + Both are notified + """ + message = self._send_mail( + self.partner_follower + self.partner_no_follower, notify_followers=True ) - self.assertEqual(len(res.ids), 1) - message = self.env["mail.message"] - for record in res: - if record.notification_ids.mapped("res_partner_id").ids == [ - self.partner_03.id - ] and record.partner_ids.ids == [self.partner_03.id]: - message += record - self.assertEqual(len(message.ids), 0) - values["partner_ids"] = [(6, 0, [self.partner_03.id])] - compose_id = mail_compose.with_context(ctx).create(values) - compose_id.notify_followers = False - compose_id.with_context(ctx).send_mail() - res = self.env["mail.message"].search( - [("model", "=", "res.partner"), ("res_id", "=", self.partner_01.id)] + self.assertEqual( + message.notification_ids.mapped("res_partner_id"), + self.partner_no_follower + self.partner_follower, + ) + + def test_2(self): + """ + Data: + One partner follower of partner_01 + Test case: + Send message to the non follower partner + Expected result: + Both are notified + """ + message = self._send_mail(self.partner_no_follower, notify_followers=True) + self.assertEqual( + message.notification_ids.mapped("res_partner_id"), + self.partner_no_follower + self.partner_follower, + ) + + def test_3(self): + """ + Data: + One partner follower of partner_01 + Test case: + Send message to the non follower partner and disable the + notification to followers + Expected result: + Only the non follower partner is notified + """ + message = self._send_mail(self.partner_no_follower, notify_followers=False) + self.assertEqual( + message.notification_ids.mapped("res_partner_id"), self.partner_no_follower ) - message = self.env["mail.message"] - for record in res: - if record.notification_ids.mapped("res_partner_id").ids == [ - self.partner_03.id - ] and record.partner_ids.ids == [self.partner_03.id]: - message += record - self.assertEqual(len(message.ids), 1) diff --git a/mail_optional_follower_notification/wizard/mail_compose_message.py b/mail_optional_follower_notification/wizard/mail_compose_message.py index 843c86f765..7a32f104aa 100644 --- a/mail_optional_follower_notification/wizard/mail_compose_message.py +++ b/mail_optional_follower_notification/wizard/mail_compose_message.py @@ -1,7 +1,7 @@ # Copyright 2016 ACSONE SA/NV () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import api, fields, models +from odoo import fields, models class MailComposeMessage(models.TransientModel): @@ -9,11 +9,8 @@ class MailComposeMessage(models.TransientModel): notify_followers = fields.Boolean(default=True) - @api.multi def send_mail(self, auto_commit=False): - ctx = self.env.context.copy() for wizard in self: - ctx["notify_followers"] = wizard.notify_followers - wizard = wizard.with_context(ctx) + wizard = wizard.with_context(notify_followers=wizard.notify_followers) super(MailComposeMessage, wizard).send_mail(auto_commit=auto_commit) - return {"type": "ir.actions.act_window_close"} + return True diff --git a/mail_optional_follower_notification/wizard/mail_compose_message_view.xml b/mail_optional_follower_notification/wizard/mail_compose_message_view.xml index b252a0ecbb..e5b3d39fa2 100644 --- a/mail_optional_follower_notification/wizard/mail_compose_message_view.xml +++ b/mail_optional_follower_notification/wizard/mail_compose_message_view.xml @@ -5,12 +5,12 @@ mail.compose.message - + - - - - Warning : Followers will not be notified but they can access the notification directly from the document (if they are allowed to) - + + + - Warning : Followers will not be notified but they can access the notification directly from the document (if they are allowed to) + From 8a018e30b49b7959769581f6ac0c2a58953953fb Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Thu, 9 Jul 2020 11:07:51 +0200 Subject: [PATCH 17/41] Update mail_optional_follower_notification/models/mail_thread.py Co-authored-by: Isabelle RICHARD --- .../README.rst | 14 +++--- .../__manifest__.py | 2 +- .../i18n/am.po | 31 +++++++------ .../i18n/ar.po | 31 +++++++------ .../i18n/bg.po | 31 +++++++------ .../i18n/bs.po | 31 +++++++------ .../i18n/ca.po | 36 ++++++++------- .../i18n/cs.po | 31 +++++++------ .../i18n/da.po | 31 +++++++------ .../i18n/de.po | 44 ++++++++++--------- .../i18n/el_GR.po | 31 +++++++------ .../i18n/en_GB.po | 31 +++++++------ .../i18n/es.po | 36 ++++++++------- .../i18n/es_CO.po | 33 +++++++------- .../i18n/es_CR.po | 31 +++++++------ .../i18n/es_EC.po | 31 +++++++------ .../i18n/es_MX.po | 31 +++++++------ .../i18n/es_VE.po | 31 +++++++------ .../i18n/et.po | 31 +++++++------ .../i18n/eu.po | 31 +++++++------ .../i18n/fi.po | 31 +++++++------ .../i18n/fr.po | 38 +++++++++------- .../i18n/fr_CA.po | 31 +++++++------ .../i18n/fr_CH.po | 31 +++++++------ .../i18n/gl.po | 31 +++++++------ .../i18n/hr.po | 36 ++++++++------- .../i18n/hr_HR.po | 31 +++++++------ .../i18n/hu.po | 31 +++++++------ .../i18n/it.po | 38 +++++++++------- .../i18n/ja.po | 31 +++++++------ .../i18n/lt.po | 31 +++++++------ .../i18n/lv.po | 31 +++++++------ .../mail_optional_follower_notification.pot | 21 ++++----- .../i18n/mk.po | 31 +++++++------ .../i18n/mn.po | 31 +++++++------ .../i18n/nb.po | 36 ++++++++------- .../i18n/nb_NO.po | 31 +++++++------ .../i18n/nl.po | 36 ++++++++------- .../i18n/nl_BE.po | 31 +++++++------ .../i18n/nl_NL.po | 36 ++++++++------- .../i18n/pl.po | 31 +++++++------ .../i18n/pt.po | 42 ++++++++++-------- .../i18n/pt_BR.po | 36 ++++++++------- .../i18n/pt_PT.po | 31 +++++++------ .../i18n/ro.po | 31 +++++++------ .../i18n/ru.po | 31 +++++++------ .../i18n/sk.po | 31 +++++++------ .../i18n/sl.po | 37 +++++++++------- .../i18n/sr@latin.po | 31 +++++++------ .../i18n/sv.po | 31 +++++++------ .../i18n/th.po | 31 +++++++------ .../i18n/tr.po | 36 ++++++++------- .../i18n/tr_TR.po | 36 ++++++++------- .../i18n/vi.po | 31 +++++++------ .../i18n/zh_CN.po | 31 +++++++------ .../i18n/zh_TW.po | 31 +++++++------ .../models/mail_thread.py | 4 +- .../static/description/index.html | 10 ++--- 58 files changed, 891 insertions(+), 894 deletions(-) diff --git a/mail_optional_follower_notification/README.rst b/mail_optional_follower_notification/README.rst index 93bacf1366..cb910c6a10 100644 --- a/mail_optional_follower_notification/README.rst +++ b/mail_optional_follower_notification/README.rst @@ -14,13 +14,13 @@ Mail optional follower notification :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github - :target: https://github.com/OCA/social/tree/12.0/mail_optional_follower_notification + :target: https://github.com/OCA/social/tree/13.0/mail_optional_follower_notification :alt: OCA/social .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/social-12-0/social-12-0-mail_optional_follower_notification + :target: https://translation.odoo-community.org/projects/social-13-0/social-13-0-mail_optional_follower_notification :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/205/12.0 + :target: https://runbot.odoo-community.org/runbot/205/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -42,10 +42,10 @@ document and" on mail.compose.message: This field it's initialized to true to keep the standard behavior. -.. figure:: https://raw.githubusercontent.com/OCA/social/12.0/mail_optional_follower_notification/static/description/optional_follower_001.png +.. figure:: https://raw.githubusercontent.com/OCA/social/13.0/mail_optional_follower_notification/static/description/optional_follower_001.png :alt: Default checkbox -.. figure:: https://raw.githubusercontent.com/OCA/social/12.0/mail_optional_follower_notification/static/description/optional_follower_002.png +.. figure:: https://raw.githubusercontent.com/OCA/social/13.0/mail_optional_follower_notification/static/description/optional_follower_002.png :alt: Checkbox to avoid to notify automatically followers Bug Tracker @@ -54,7 +54,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. @@ -86,6 +86,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/social `_ project on GitHub. +This module is part of the `OCA/social `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index f55cd4bf4c..f7efcc7df7 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -6,7 +6,7 @@ "author": "ACSONE SA/NV," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "category": "Social Network", - "version": "13.0.1.0.0", + "version": "13.0.1.0.1", "license": "AGPL-3", "depends": ["mail"], "data": ["wizard/mail_compose_message_view.xml"], diff --git a/mail_optional_follower_notification/i18n/am.po b/mail_optional_follower_notification/i18n/am.po index 65c4e856e4..828feb3b2c 100644 --- a/mail_optional_follower_notification/i18n/am.po +++ b/mail_optional_follower_notification/i18n/am.po @@ -19,31 +19,30 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: mail_optional_follower_notification -#: model:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_inherit_form +#: model_terms:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_form msgid "" -" + - - Warning : Followers will not be notified but they can access the notification directly from the document (if they are allowed to) + - Warning : Followers will not be notified but they can access the notification directly from the document (if they are allowed to) From c21aa7aa99144eb20b7a23fe0991216d309f74d2 Mon Sep 17 00:00:00 2001 From: hda Date: Fri, 19 Feb 2021 14:58:32 +0100 Subject: [PATCH 19/41] [13.0][FIX] mail_optional_follower_notification: change added span ref in view --- .../__manifest__.py | 2 +- .../i18n/am.po | 10 +++---- .../i18n/ar.po | 10 +++---- .../i18n/bg.po | 10 +++---- .../i18n/bs.po | 10 +++---- .../i18n/ca.po | 10 +++---- .../i18n/cs.po | 10 +++---- .../i18n/da.po | 10 +++---- .../i18n/de.po | 29 ++++++++++++------- .../i18n/el_GR.po | 10 +++---- .../i18n/en_GB.po | 10 +++---- .../i18n/es.po | 10 +++---- .../i18n/es_CO.po | 10 +++---- .../i18n/es_CR.po | 10 +++---- .../i18n/es_EC.po | 10 +++---- .../i18n/es_MX.po | 10 +++---- .../i18n/es_VE.po | 10 +++---- .../i18n/et.po | 10 +++---- .../i18n/eu.po | 10 +++---- .../i18n/fi.po | 10 +++---- .../i18n/fr.po | 29 ++++++++++++------- .../i18n/fr_CA.po | 10 +++---- .../i18n/fr_CH.po | 10 +++---- .../i18n/gl.po | 10 +++---- .../i18n/hr.po | 10 +++---- .../i18n/hr_HR.po | 10 +++---- .../i18n/hu.po | 10 +++---- .../i18n/it.po | 29 ++++++++++++------- .../i18n/ja.po | 10 +++---- .../i18n/lt.po | 10 +++---- .../i18n/lv.po | 10 +++---- .../mail_optional_follower_notification.pot | 7 +++-- .../i18n/mk.po | 10 +++---- .../i18n/mn.po | 10 +++---- .../i18n/nb.po | 10 +++---- .../i18n/nb_NO.po | 10 +++---- .../i18n/nl.po | 10 +++---- .../i18n/nl_BE.po | 10 +++---- .../i18n/nl_NL.po | 10 +++---- .../i18n/pl.po | 10 +++---- .../i18n/pt.po | 29 ++++++++++++------- .../i18n/pt_BR.po | 10 +++---- .../i18n/pt_PT.po | 10 +++---- .../i18n/ro.po | 10 +++---- .../i18n/ru.po | 10 +++---- .../i18n/sk.po | 10 +++---- .../i18n/sl.po | 10 +++---- .../i18n/sr@latin.po | 10 +++---- .../i18n/sv.po | 10 +++---- .../i18n/th.po | 10 +++---- .../i18n/tr.po | 10 +++---- .../i18n/tr_TR.po | 10 +++---- .../i18n/vi.po | 10 +++---- .../i18n/zh_CN.po | 10 +++---- .../i18n/zh_TW.po | 10 +++---- .../wizard/mail_compose_message_view.xml | 8 ++--- 56 files changed, 277 insertions(+), 346 deletions(-) diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index f7efcc7df7..9ac1bf9213 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -6,7 +6,7 @@ "author": "ACSONE SA/NV," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "category": "Social Network", - "version": "13.0.1.0.1", + "version": "13.0.1.1.0", "license": "AGPL-3", "depends": ["mail"], "data": ["wizard/mail_compose_message_view.xml"], diff --git a/mail_optional_follower_notification/i18n/am.po b/mail_optional_follower_notification/i18n/am.po index 828feb3b2c..c15b67c987 100644 --- a/mail_optional_follower_notification/i18n/am.po +++ b/mail_optional_follower_notification/i18n/am.po @@ -21,12 +21,10 @@ msgstr "" #. module: mail_optional_follower_notification #: model_terms:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_form msgid "" -"\n" -" - - + + - Warning : Followers will not be notified but they can access the notification directly from the document (if they are allowed to) - + From e95b0b88032ac87b20531103b0c3e4a0fb0c0799 Mon Sep 17 00:00:00 2001 From: Ioan Galan Date: Fri, 7 May 2021 16:42:26 +0200 Subject: [PATCH 20/41] [IMP] mail_optional_follower_notification: black, isort, prettier --- mail_optional_follower_notification/models/mail_thread.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mail_optional_follower_notification/models/mail_thread.py b/mail_optional_follower_notification/models/mail_thread.py index 1a675f7b20..d2b70f1d43 100644 --- a/mail_optional_follower_notification/models/mail_thread.py +++ b/mail_optional_follower_notification/models/mail_thread.py @@ -8,8 +8,8 @@ class MailThread(models.AbstractModel): _inherit = "mail.thread" def _notify_compute_recipients(self, message, msg_vals): - """ Compute recipients to notify based on subtype and followers. This - method returns data structured as expected for ``_notify_recipients``. """ + """Compute recipients to notify based on subtype and followers. This + method returns data structured as expected for ``_notify_recipients``.""" recipient_data = super()._notify_compute_recipients(message, msg_vals) if "notify_followers" in self.env.context and not self.env.context.get( "notify_followers", False From 8d12d90f67f9a221891365eca3e6ccb36081657e Mon Sep 17 00:00:00 2001 From: Ioan Galan Date: Fri, 7 May 2021 16:46:45 +0200 Subject: [PATCH 21/41] [MIG] mail_optional_follower_notification: Migration to 14.0 --- mail_optional_follower_notification/__manifest__.py | 2 +- mail_optional_follower_notification/models/mail_thread.py | 6 ++++++ .../tests/test_mail_optional_follower_notifications.py | 5 +++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index 9ac1bf9213..dfa5c76a37 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -6,7 +6,7 @@ "author": "ACSONE SA/NV," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "category": "Social Network", - "version": "13.0.1.1.0", + "version": "14.0.1.0.0", "license": "AGPL-3", "depends": ["mail"], "data": ["wizard/mail_compose_message_view.xml"], diff --git a/mail_optional_follower_notification/models/mail_thread.py b/mail_optional_follower_notification/models/mail_thread.py index d2b70f1d43..a9da2b5496 100644 --- a/mail_optional_follower_notification/models/mail_thread.py +++ b/mail_optional_follower_notification/models/mail_thread.py @@ -2,6 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import models +from odoo.tools import config class MailThread(models.AbstractModel): @@ -10,7 +11,12 @@ class MailThread(models.AbstractModel): def _notify_compute_recipients(self, message, msg_vals): """Compute recipients to notify based on subtype and followers. This method returns data structured as expected for ``_notify_recipients``.""" + test_condition = config["test_enable"] and not self.env.context.get( + "test_optional_follow_notification" + ) recipient_data = super()._notify_compute_recipients(message, msg_vals) + if test_condition: + return recipient_data if "notify_followers" in self.env.context and not self.env.context.get( "notify_followers", False ): diff --git a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py index 439e002cdd..af05940a93 100644 --- a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py +++ b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py @@ -1,10 +1,10 @@ # Copyright 2019 ACSONE SA/NV () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo.tests import common +from odoo.tests.common import SavepointCase -class TestMailOptionalFollowernotifications(common.SavepointCase): +class TestMailOptionalFollowernotifications(SavepointCase): @classmethod def setUpClass(cls): super().setUpClass() @@ -20,6 +20,7 @@ def setUpClass(cls): "default_model": "res.partner", "default_res_id": cls.partner_01.id, "default_composition_mode": "comment", + "test_optional_follow_notification": True, } ) cls.mail_compose_context = ctx From 038ee67e5cbe2eb09dddb71c21f0db61bee3f3cd Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 24 Jan 2022 10:19:19 +0000 Subject: [PATCH 22/41] [UPD] Update mail_optional_follower_notification.pot --- .../mail_optional_follower_notification.pot | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot b/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot index 805e07feba..d0b7ef33a4 100644 --- a/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot +++ b/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -22,6 +22,12 @@ msgid "" " they are allowed to)" msgstr "" +#. module: mail_optional_follower_notification +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message__display_name +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_thread__display_name +msgid "Display Name" +msgstr "" + #. module: mail_optional_follower_notification #: model:ir.model,name:mail_optional_follower_notification.model_mail_thread msgid "Email Thread" @@ -33,6 +39,20 @@ msgid "Email composition wizard" msgstr "" #. module: mail_optional_follower_notification +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message__id +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_thread__id +msgid "ID" +msgstr "" + +#. module: mail_optional_follower_notification +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message____last_update +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_thread____last_update +msgid "Last Modified on" +msgstr "" + +#. module: mail_optional_follower_notification +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_account_invoice_send__notify_followers +#: model:ir.model.fields,field_description:mail_optional_follower_notification.field_account_tour_upload_bill__notify_followers #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message__notify_followers msgid "Notify Followers" msgstr "" From 3c12df24fd7f5d4938a6738a179d52c49cb913d3 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 24 Jan 2022 10:26:39 +0000 Subject: [PATCH 23/41] [UPD] README.rst --- mail_optional_follower_notification/README.rst | 14 +++++++------- .../static/description/index.html | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/mail_optional_follower_notification/README.rst b/mail_optional_follower_notification/README.rst index cb910c6a10..94cb2317f0 100644 --- a/mail_optional_follower_notification/README.rst +++ b/mail_optional_follower_notification/README.rst @@ -14,13 +14,13 @@ Mail optional follower notification :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github - :target: https://github.com/OCA/social/tree/13.0/mail_optional_follower_notification + :target: https://github.com/OCA/social/tree/14.0/mail_optional_follower_notification :alt: OCA/social .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/social-13-0/social-13-0-mail_optional_follower_notification + :target: https://translation.odoo-community.org/projects/social-14-0/social-14-0-mail_optional_follower_notification :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/205/13.0 + :target: https://runbot.odoo-community.org/runbot/205/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -42,10 +42,10 @@ document and" on mail.compose.message: This field it's initialized to true to keep the standard behavior. -.. figure:: https://raw.githubusercontent.com/OCA/social/13.0/mail_optional_follower_notification/static/description/optional_follower_001.png +.. figure:: https://raw.githubusercontent.com/OCA/social/14.0/mail_optional_follower_notification/static/description/optional_follower_001.png :alt: Default checkbox -.. figure:: https://raw.githubusercontent.com/OCA/social/13.0/mail_optional_follower_notification/static/description/optional_follower_002.png +.. figure:: https://raw.githubusercontent.com/OCA/social/14.0/mail_optional_follower_notification/static/description/optional_follower_002.png :alt: Checkbox to avoid to notify automatically followers Bug Tracker @@ -54,7 +54,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. @@ -86,6 +86,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/social `_ project on GitHub. +This module is part of the `OCA/social `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_optional_follower_notification/static/description/index.html b/mail_optional_follower_notification/static/description/index.html index 326b758966..c98145e711 100644 --- a/mail_optional_follower_notification/static/description/index.html +++ b/mail_optional_follower_notification/static/description/index.html @@ -367,7 +367,7 @@

Mail optional follower notification

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module adds the possibility to choose if you want to automatically notify followers on mail.compose.message. By default, Odoo notify automatically all followers.

@@ -390,10 +390,10 @@

Usage

document and” on mail.compose.message:

This field it’s initialized to true to keep the standard behavior.

-Default checkbox +Default checkbox
-Checkbox to avoid to notify automatically followers +Checkbox to avoid to notify automatically followers
@@ -401,7 +401,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.

@@ -427,7 +427,7 @@

Maintainers

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/social project on GitHub.

+

This module is part of the OCA/social project on GitHub.

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

From 2a9e8ecb2b0bb5c95b969f18f00b982da19b8b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olga=20Marco=20Pu=C3=A9rtolas?= Date: Wed, 2 Feb 2022 10:40:13 +0000 Subject: [PATCH 24/41] Translated using Weblate (Spanish) Currently translated at 50.0% (2 of 4 strings) Translation: social-14.0/social-14.0-mail_optional_follower_notification Translate-URL: https://translation.odoo-community.org/projects/social-14-0/social-14-0-mail_optional_follower_notification/es/ --- mail_optional_follower_notification/i18n/es.po | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mail_optional_follower_notification/i18n/es.po b/mail_optional_follower_notification/i18n/es.po index 4c21891d48..f7a40f196c 100644 --- a/mail_optional_follower_notification/i18n/es.po +++ b/mail_optional_follower_notification/i18n/es.po @@ -9,14 +9,15 @@ msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-12-01 02:19+0000\n" -"PO-Revision-Date: 2017-12-01 02:19+0000\n" -"Last-Translator: OCA Transbot , 2017\n" +"PO-Revision-Date: 2022-02-02 13:33+0000\n" +"Last-Translator: Olga Marco Puértolas \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" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" #. module: mail_optional_follower_notification #: model_terms:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_form @@ -26,6 +27,10 @@ msgid "" "notified but they can access the notification directly from the document (if " "they are allowed to)" msgstr "" +"`_. 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 * Adrien Peiffer * Laurent Mignon * Andrea Stirpe +* Robin Goots 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/social `_ project on GitHub. +This module is part of the `OCA/social `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_optional_follower_notification/static/description/index.html b/mail_optional_follower_notification/static/description/index.html index c98145e711..112c81f581 100644 --- a/mail_optional_follower_notification/static/description/index.html +++ b/mail_optional_follower_notification/static/description/index.html @@ -367,7 +367,7 @@

Mail optional follower notification

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module adds the possibility to choose if you want to automatically notify followers on mail.compose.message. By default, Odoo notify automatically all followers.

@@ -390,10 +390,10 @@

Usage

document and” on mail.compose.message:

This field it’s initialized to true to keep the standard behavior.

-Default checkbox +Default checkbox
-Checkbox to avoid to notify automatically followers +Checkbox to avoid to notify automatically followers
@@ -401,7 +401,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.

@@ -418,6 +418,7 @@

Contributors

  • Adrien Peiffer <adrien.peiffer@acsone.eu>
  • Laurent Mignon <laurent.mignon@acsone.eu>
  • Andrea Stirpe <a.stirpe@onestein.nl>
  • +
  • Robin Goots <robin.goots@dynapps.be>
  • @@ -427,7 +428,7 @@

    Maintainers

    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/social project on GitHub.

    +

    This module is part of the OCA/social project on GitHub.

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

    From c145af42e7df422a5174d89548d74a68d55a63a2 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 18 Mar 2022 11:46:49 +0000 Subject: [PATCH 28/41] mail_optional_follower_notification 15.0.1.0.1 --- mail_optional_follower_notification/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index 42ab210215..6d5a749ea0 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -6,7 +6,7 @@ "author": "ACSONE SA/NV," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "category": "Social Network", - "version": "15.0.1.0.0", + "version": "15.0.1.0.1", "license": "AGPL-3", "depends": ["mail"], "data": ["wizard/mail_compose_message_view.xml"], From ea9de6f0fa920f8870c9ba548397bbfbbf999277 Mon Sep 17 00:00:00 2001 From: oca-git-bot Date: Mon, 12 Dec 2022 00:16:03 +0100 Subject: [PATCH 29/41] [IMP] update dotfiles [ci skip] --- .../i18n/en.po | 55 ------------------- 1 file changed, 55 deletions(-) delete mode 100644 mail_optional_follower_notification/i18n/en.po diff --git a/mail_optional_follower_notification/i18n/en.po b/mail_optional_follower_notification/i18n/en.po deleted file mode 100644 index fd79215ea8..0000000000 --- a/mail_optional_follower_notification/i18n/en.po +++ /dev/null @@ -1,55 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * mail_optional_follower_notification -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: social (8.0)\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-05-26 02:42+0000\n" -"PO-Revision-Date: 2016-05-25 14:10+0000\n" -"Last-Translator: OCA Transbot \n" -"Language-Team: English (http://www.transifex.com/oca/OCA-social-8-0/language/" -"en/)\n" -"Language: en\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: mail_optional_follower_notification -#: model:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_inherit_form -#, fuzzy -msgid "" -"`_. 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. @@ -87,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/social `_ project on GitHub. +This module is part of the `OCA/social `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index 6d5a749ea0..319ce95f84 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -6,7 +6,7 @@ "author": "ACSONE SA/NV," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "category": "Social Network", - "version": "15.0.1.0.1", + "version": "16.0.1.0.0", "license": "AGPL-3", "depends": ["mail"], "data": ["wizard/mail_compose_message_view.xml"], diff --git a/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot b/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot index 89c8f31bf7..521b6362fa 100644 --- a/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot +++ b/mail_optional_follower_notification/i18n/mail_optional_follower_notification.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" diff --git a/mail_optional_follower_notification/models/mail_thread.py b/mail_optional_follower_notification/models/mail_thread.py index 5829805663..6138e23b85 100644 --- a/mail_optional_follower_notification/models/mail_thread.py +++ b/mail_optional_follower_notification/models/mail_thread.py @@ -2,21 +2,15 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import models -from odoo.tools import config class MailThread(models.AbstractModel): _inherit = "mail.thread" - def _notify_compute_recipients(self, message, msg_vals): + def _notify_get_recipients(self, message, msg_vals, **kwargs): """Compute recipients to notify based on subtype and followers. This method returns data structured as expected for ``_notify_recipients``.""" - test_condition = config["test_enable"] and not self.env.context.get( - "test_optional_follow_notification" - ) - recipient_data = super()._notify_compute_recipients(message, msg_vals) - if test_condition: - return recipient_data + recipient_data = super()._notify_get_recipients(message, msg_vals, **kwargs) if "notify_followers" in self.env.context and not self.env.context.get( "notify_followers", False ): diff --git a/mail_optional_follower_notification/static/description/index.html b/mail_optional_follower_notification/static/description/index.html index 112c81f581..48abdd9da4 100644 --- a/mail_optional_follower_notification/static/description/index.html +++ b/mail_optional_follower_notification/static/description/index.html @@ -367,7 +367,7 @@

    Mail optional follower notification

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

    +

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

    This module adds the possibility to choose if you want to automatically notify followers on mail.compose.message. By default, Odoo notify automatically all followers.

    @@ -390,10 +390,10 @@

    Usage

    document and” on mail.compose.message:

    This field it’s initialized to true to keep the standard behavior.

    -Default checkbox +Default checkbox
    -Checkbox to avoid to notify automatically followers +Checkbox to avoid to notify automatically followers
    @@ -401,7 +401,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.

    @@ -428,7 +428,7 @@

    Maintainers

    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/social project on GitHub.

    +

    This module is part of the OCA/social project on GitHub.

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

    diff --git a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py index 8932d4fa77..024ebdb37e 100644 --- a/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py +++ b/mail_optional_follower_notification/tests/test_mail_optional_follower_notifications.py @@ -20,7 +20,6 @@ def setUpClass(cls): "default_model": "res.partner", "default_res_id": cls.partner_01.id, "default_composition_mode": "comment", - "test_optional_follow_notification": True, } ) cls.mail_compose_context = ctx From 488fe47a5d6c053fe271fddbc91a577bd54b6928 Mon Sep 17 00:00:00 2001 From: Anna Janiszewska Date: Thu, 9 Mar 2023 16:34:50 +0100 Subject: [PATCH 31/41] [FIX] fix value returned by _action_send_mail --- .../wizard/mail_compose_message.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mail_optional_follower_notification/wizard/mail_compose_message.py b/mail_optional_follower_notification/wizard/mail_compose_message.py index 151e19e1ab..0cd83ec37e 100644 --- a/mail_optional_follower_notification/wizard/mail_compose_message.py +++ b/mail_optional_follower_notification/wizard/mail_compose_message.py @@ -10,7 +10,15 @@ class MailComposeMessage(models.TransientModel): notify_followers = fields.Boolean(default=True) def _action_send_mail(self, auto_commit=False): + result_mails_su, result_messages = ( + self.env["mail.mail"].sudo(), + self.env["mail.message"], + ) for wizard in self: wizard = wizard.with_context(notify_followers=wizard.notify_followers) - super(MailComposeMessage, wizard)._action_send_mail(auto_commit=auto_commit) - return True + res_mail, res_message = super(MailComposeMessage, wizard)._action_send_mail( + auto_commit=auto_commit + ) + result_mails_su += res_mail + result_messages += res_message + return result_mails_su, result_messages From 92db2d9b1a7ccf981c3ae2fb90b186f434456f9b Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 20 Mar 2023 09:36:45 +0000 Subject: [PATCH 32/41] mail_optional_follower_notification 16.0.1.0.1 --- mail_optional_follower_notification/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mail_optional_follower_notification/__manifest__.py b/mail_optional_follower_notification/__manifest__.py index 319ce95f84..c7a0e7eabd 100644 --- a/mail_optional_follower_notification/__manifest__.py +++ b/mail_optional_follower_notification/__manifest__.py @@ -6,7 +6,7 @@ "author": "ACSONE SA/NV," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "category": "Social Network", - "version": "16.0.1.0.0", + "version": "16.0.1.0.1", "license": "AGPL-3", "depends": ["mail"], "data": ["wizard/mail_compose_message_view.xml"], From 5aed75bd0ab6ffe90d2e9bbfb88db7146b86e774 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 24 Jul 2023 07:57:32 +0000 Subject: [PATCH 33/41] Translated using Weblate (Italian) Currently translated at 25.0% (1 of 4 strings) Translation: social-16.0/social-16.0-mail_optional_follower_notification Translate-URL: https://translation.odoo-community.org/projects/social-16-0/social-16-0-mail_optional_follower_notification/it/ --- mail_optional_follower_notification/i18n/it.po | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mail_optional_follower_notification/i18n/it.po b/mail_optional_follower_notification/i18n/it.po index 2b1bab0eed..9985fab4e3 100644 --- a/mail_optional_follower_notification/i18n/it.po +++ b/mail_optional_follower_notification/i18n/it.po @@ -10,14 +10,15 @@ msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-05-17 01:02+0000\n" -"PO-Revision-Date: 2017-05-17 01:02+0000\n" -"Last-Translator: Marius Marolla , 2017\n" +"PO-Revision-Date: 2023-07-24 10:10+0000\n" +"Last-Translator: mymage \n" "Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" "Language: it\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 4.17\n" #. module: mail_optional_follower_notification #: model_terms:ir.ui.view,arch_db:mail_optional_follower_notification.email_compose_message_wizard_form @@ -36,7 +37,7 @@ msgstr "" #. module: mail_optional_follower_notification #: model:ir.model,name:mail_optional_follower_notification.model_mail_compose_message msgid "Email composition wizard" -msgstr "Wizard Creazione Email" +msgstr "Procedura guidata creazione e-mail" #. module: mail_optional_follower_notification #: model:ir.model.fields,field_description:mail_optional_follower_notification.field_mail_compose_message__notify_followers From 6aada8e8a3330f17a519332fcace845f57b65972 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 17:03:29 +0000 Subject: [PATCH 34/41] [UPD] README.rst --- .../README.rst | 15 +++++--- .../static/description/index.html | 38 ++++++++++--------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/mail_optional_follower_notification/README.rst b/mail_optional_follower_notification/README.rst index 6573fa04ea..0b0178f29d 100644 --- a/mail_optional_follower_notification/README.rst +++ b/mail_optional_follower_notification/README.rst @@ -2,10 +2,13 @@ Mail optional follower notification =================================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ed4cd773a22f59def3ec4e730dbe1cd7924a802153259aac25219749d70d5278 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Mail optional follower notification .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/social-16-0/social-16-0-mail_optional_follower_notification :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/205/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds the possibility to choose if you want to automatically notify followers on mail.compose.message. By default, Odoo notify @@ -53,7 +56,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 +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/mail_optional_follower_notification/static/description/index.html b/mail_optional_follower_notification/static/description/index.html index 48abdd9da4..b83ef301b9 100644 --- a/mail_optional_follower_notification/static/description/index.html +++ b/mail_optional_follower_notification/static/description/index.html @@ -1,20 +1,20 @@ - + - + Mail optional follower notification