From 8ab1446a573e9b144e4a627299970d4d71bf6695 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Tue, 1 Oct 2024 14:32:16 -0500 Subject: [PATCH 01/44] [ADD] mail_forward: new module to forward messages from the chatter --- mail_forward/README.rst | 90 ++++ mail_forward/__init__.py | 2 + mail_forward/__manifest__.py | 27 ++ mail_forward/i18n/es.po | 83 ++++ mail_forward/i18n/mail_forward.pot | 101 ++++ mail_forward/models/__init__.py | 2 + mail_forward/models/mail_message.py | 57 +++ mail_forward/models/mail_thread.py | 19 + mail_forward/readme/CONTRIBUTORS.rst | 2 + mail_forward/readme/DESCRIPTION.rst | 2 + mail_forward/readme/USAGE.rst | 8 + mail_forward/static/description/icon.png | Bin 0 -> 9455 bytes mail_forward/static/description/index.html | 444 ++++++++++++++++++ .../forward_message/forward_message.esm.js | 44 ++ .../forward_message/forward_message.xml | 32 ++ .../message_action_list.xml | 12 + .../static/tests/tours/mail_forward.esm.js | 116 +++++ mail_forward/tests/__init__.py | 1 + mail_forward/tests/test_mail_forward.py | 77 +++ mail_forward/wizards/__init__.py | 1 + mail_forward/wizards/mail_compose_message.py | 39 ++ .../wizards/mail_compose_message_view.xml | 27 ++ 22 files changed, 1186 insertions(+) create mode 100644 mail_forward/README.rst create mode 100644 mail_forward/__init__.py create mode 100644 mail_forward/__manifest__.py create mode 100644 mail_forward/i18n/es.po create mode 100644 mail_forward/i18n/mail_forward.pot create mode 100644 mail_forward/models/__init__.py create mode 100644 mail_forward/models/mail_message.py create mode 100644 mail_forward/models/mail_thread.py create mode 100644 mail_forward/readme/CONTRIBUTORS.rst create mode 100644 mail_forward/readme/DESCRIPTION.rst create mode 100644 mail_forward/readme/USAGE.rst create mode 100644 mail_forward/static/description/icon.png create mode 100644 mail_forward/static/description/index.html create mode 100644 mail_forward/static/src/components/forward_message/forward_message.esm.js create mode 100644 mail_forward/static/src/components/forward_message/forward_message.xml create mode 100644 mail_forward/static/src/components/message_action_list/message_action_list.xml create mode 100644 mail_forward/static/tests/tours/mail_forward.esm.js create mode 100644 mail_forward/tests/__init__.py create mode 100644 mail_forward/tests/test_mail_forward.py create mode 100644 mail_forward/wizards/__init__.py create mode 100644 mail_forward/wizards/mail_compose_message.py create mode 100644 mail_forward/wizards/mail_compose_message_view.xml diff --git a/mail_forward/README.rst b/mail_forward/README.rst new file mode 100644 index 000000000..99c7b20a1 --- /dev/null +++ b/mail_forward/README.rst @@ -0,0 +1,90 @@ +==================== +Mail Forward Message +==================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ce6348512860de33703c2523bb1131aa2bb23a10374db4fb6f66383a7933134f + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github + :target: https://github.com/OCA/social/tree/15.0/mail_forward + :alt: OCA/social +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/social-15-0/social-15-0-mail_forward + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows users to forward messages from the chatter of any document to other users, +adding them as followers of the document without notifying the current followers. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, follow these steps: + +* Navigate to the chatter of any document. +* Hover the mouse over any message in the chatter (excluding internal notes). +* A Forward icon will appear next to the message. +* Click the button to display a wizard with the message. +* Select the users to forward the message to. +* Click the 'Send Mail' button to send the message to the selected users. + +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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + * Carlos López + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +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_forward/__init__.py b/mail_forward/__init__.py new file mode 100644 index 000000000..aee8895e7 --- /dev/null +++ b/mail_forward/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizards diff --git a/mail_forward/__manifest__.py b/mail_forward/__manifest__.py new file mode 100644 index 000000000..d693cfb9c --- /dev/null +++ b/mail_forward/__manifest__.py @@ -0,0 +1,27 @@ +# Copyright 2024 Tecnativa - Carlos Lopez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "Mail Forward Message", + "version": "15.0.1.0.0", + "summary": "Forward messages from the chatter of any document to other users.", + "author": "Tecnativa, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/social", + "depends": ["mail", "contacts"], + "data": [ + "wizards/mail_compose_message_view.xml", + ], + "assets": { + "web.assets_backend": [ + "mail_forward/static/src/components/**/*.esm.js", + ], + "web.assets_qweb": [ + "mail_forward/static/src/components/*/*.xml", + ], + "web.assets_tests": [ + "mail_forward/static/tests/tours/**/*", + ], + }, + "installable": True, + "auto_install": False, + "license": "AGPL-3", +} diff --git a/mail_forward/i18n/es.po b/mail_forward/i18n/es.po new file mode 100644 index 000000000..c33ce8127 --- /dev/null +++ b/mail_forward/i18n/es.po @@ -0,0 +1,83 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_forward +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-02 12:25+0000\n" +"PO-Revision-Date: 2024-10-02 07:27-0500\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0.1\n" + +#. module: mail_forward +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "---------- Forwarded message ---------" +msgstr "---------- Mensaje reenviado ---------" + +#. module: mail_forward +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "Date" +msgstr "Fecha" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_thread +msgid "Email Thread" +msgstr "Hilo de correos electrónicos" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_compose_message +msgid "Email composition wizard" +msgstr "Asistente de composición de correos electrónicos" + +#. module: mail_forward +#. openerp-web +#: code:addons/mail_forward/models/mail_message.py:0 +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message" +msgstr "Reenviar mensaje" + +#. module: mail_forward +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "From" +msgstr "De" + +#. module: mail_forward +#: code:addons/mail_forward/wizards/mail_compose_message.py:0 +#, python-format +msgid "Fwd:" +msgstr "" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_message +msgid "Message" +msgstr "Mensaje" + +#. module: mail_forward +#: code:addons/mail_forward/wizards/mail_compose_message.py:0 +#, python-format +msgid "Re:" +msgstr "" + +#. module: mail_forward +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "Subject" +msgstr "Asunto" + +#. module: mail_forward +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "To" +msgstr "Para" diff --git a/mail_forward/i18n/mail_forward.pot b/mail_forward/i18n/mail_forward.pot new file mode 100644 index 000000000..cf0234fed --- /dev/null +++ b/mail_forward/i18n/mail_forward.pot @@ -0,0 +1,101 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_forward +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: mail_forward +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "---------- Forwarded message ---------" +msgstr "" + +#. module: mail_forward +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "Date" +msgstr "" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_thread +msgid "Email Thread" +msgstr "" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_compose_message +msgid "Email composition wizard" +msgstr "" + +#. module: mail_forward +#. openerp-web +#: code:addons/mail_forward/models/mail_message.py:0 +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message" +msgstr "" + +#. module: mail_forward +#. openerp-web +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Center" +msgstr "" + +#. module: mail_forward +#. openerp-web +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Left" +msgstr "" + +#. module: mail_forward +#. openerp-web +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Right" +msgstr "" + +#. module: mail_forward +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "From" +msgstr "" + +#. module: mail_forward +#: code:addons/mail_forward/wizards/mail_compose_message.py:0 +#, python-format +msgid "Fwd:" +msgstr "" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_message +msgid "Message" +msgstr "" + +#. module: mail_forward +#: code:addons/mail_forward/wizards/mail_compose_message.py:0 +#, python-format +msgid "Re:" +msgstr "" + +#. module: mail_forward +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "Subject" +msgstr "" + +#. module: mail_forward +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "To" +msgstr "" diff --git a/mail_forward/models/__init__.py b/mail_forward/models/__init__.py new file mode 100644 index 000000000..eccc2881b --- /dev/null +++ b/mail_forward/models/__init__.py @@ -0,0 +1,2 @@ +from . import mail_message +from . import mail_thread diff --git a/mail_forward/models/mail_message.py b/mail_forward/models/mail_message.py new file mode 100644 index 000000000..b5bacd621 --- /dev/null +++ b/mail_forward/models/mail_message.py @@ -0,0 +1,57 @@ +# Copyright 2024 Tecnativa - Carlos Lopez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import _, models +from odoo.tools import format_datetime + + +class MailMessage(models.Model): + _inherit = "mail.message" + + def action_wizard_forward(self): + view = self.env.ref("mail_forward.mail_compose_message_forward_form") + action = self.env["ir.actions.actions"]._for_xml_id( + "mail.action_email_compose_message_wizard" + ) + action["name"] = _("Forward Message") + action["view_mode"] = view.type + action["views"] = [(view.id, view.type)] + action["context"] = { + "default_model": self.model, + "default_res_id": self.res_id, + "default_composition_mode": "comment", + "default_body": self._build_message_body_for_forward(), + "default_attachment_ids": self.attachment_ids.ids, + "default_is_log": False, + "default_notify": True, + "force_email": True, + "message_forwarded_id": self.id, + } + return action + + def _build_message_body_for_forward(self): + partner_emails = [ + partner.email_formatted + for partner in self.partner_ids + if partner.email_formatted + ] + return """ +


+ {str_forwarded_message}
+ {str_from}: {email_from}
+ {str_date}: {date}
+ {str_subject}: {subject}
+ {str_to}: {to}
+

+ {body} + """.format( + str_forwarded_message=_("---------- Forwarded message ---------"), + email_from=self.email_from, + date=format_datetime(self.env, self.date), + subject=self.subject, + to=", ".join(partner_emails), + str_date=_("Date"), + str_subject=_("Subject"), + str_from=_("From"), + str_to=_("To"), + body=self.body, + ) diff --git a/mail_forward/models/mail_thread.py b/mail_forward/models/mail_thread.py new file mode 100644 index 000000000..ea0bfac3e --- /dev/null +++ b/mail_forward/models/mail_thread.py @@ -0,0 +1,19 @@ +# Copyright 2024 Tecnativa - Carlos Lopez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import models + + +class MailThread(models.AbstractModel): + _inherit = "mail.thread" + + def _notify_compute_recipients(self, message, msg_vals): + recipients_data = super()._notify_compute_recipients(message, msg_vals) + # only notify to explicit partners, remove others(followers). + if self.env.context.get("message_forwarded_id"): + current_partners_ids = message.partner_ids.ids + new_recipeints = [] + for recipeint in recipients_data: + if recipeint["id"] in current_partners_ids: + new_recipeints.append(recipeint) + recipients_data = new_recipeints + return recipients_data diff --git a/mail_forward/readme/CONTRIBUTORS.rst b/mail_forward/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..84a60999d --- /dev/null +++ b/mail_forward/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* `Tecnativa `_: + * Carlos López diff --git a/mail_forward/readme/DESCRIPTION.rst b/mail_forward/readme/DESCRIPTION.rst new file mode 100644 index 000000000..10e246711 --- /dev/null +++ b/mail_forward/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module allows users to forward messages from the chatter of any document to other users, +adding them as followers of the document without notifying the current followers. diff --git a/mail_forward/readme/USAGE.rst b/mail_forward/readme/USAGE.rst new file mode 100644 index 000000000..611bacf03 --- /dev/null +++ b/mail_forward/readme/USAGE.rst @@ -0,0 +1,8 @@ +To use this module, follow these steps: + +* Navigate to the chatter of any document. +* Hover the mouse over any message in the chatter (excluding internal notes). +* A Forward icon will appear next to the message. +* Click the button to display a wizard with the message. +* Select the users to forward the message to. +* Click the 'Send Mail' button to send the message to the selected users. diff --git a/mail_forward/static/description/icon.png b/mail_forward/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_forward/static/description/index.html b/mail_forward/static/description/index.html new file mode 100644 index 000000000..d236e841f --- /dev/null +++ b/mail_forward/static/description/index.html @@ -0,0 +1,444 @@ + + + + + +Mail Forward Message + + + +
+

Mail Forward Message

+ + +

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

+

This module allows users to forward messages from the chatter of any document to other users, +adding them as followers of the document without notifying the current followers.

+

Table of contents

+ +
+

Usage

+

To use this module, follow these steps:

+
    +
  • Navigate to the chatter of any document.
  • +
  • Hover the mouse over any message in the chatter (excluding internal notes).
  • +
  • A Forward icon will appear next to the message.
  • +
  • Click the button to display a wizard with the message.
  • +
  • Select the users to forward the message to.
  • +
  • Click the ‘Send Mail’ button to send the message to the selected users.
  • +
+
+
+

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 to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

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_forward/static/src/components/forward_message/forward_message.esm.js b/mail_forward/static/src/components/forward_message/forward_message.esm.js new file mode 100644 index 000000000..654b74a07 --- /dev/null +++ b/mail_forward/static/src/components/forward_message/forward_message.esm.js @@ -0,0 +1,44 @@ +/** @odoo-module **/ +/* Copyright 2024 Tecnativa - Carlos Lopez + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +*/ +import {registerMessagingComponent} from "@mail/utils/messaging_component"; +const {Component} = owl; + +export class ForwardMessage extends Component { + async onClickForwardMessage() { + const composer = this.props.message.originThread.composer; + const action = await this.env.services.rpc({ + model: "mail.message", + method: "action_wizard_forward", + args: [[this.props.message.id]], + }); + this.env.bus.trigger("do-action", { + action: action, + options: { + additional_context: { + active_id: this.props.message.id, + active_ids: [this.props.message.id], + active_model: "mail.message", + }, + on_close: () => { + if (composer.exists()) { + composer._reset(); + if (composer.activeThread) { + composer.activeThread.loadNewMessages(); + composer.activeThread.refreshFollowers(); + composer.activeThread.fetchAndUpdateSuggestedRecipients(); + } + } + }, + }, + }); + } +} + +ForwardMessage.template = "mail_forward.ForwardMessage"; +ForwardMessage.props = { + message: Object, +}; + +registerMessagingComponent(ForwardMessage); diff --git a/mail_forward/static/src/components/forward_message/forward_message.xml b/mail_forward/static/src/components/forward_message/forward_message.xml new file mode 100644 index 000000000..0da6d778c --- /dev/null +++ b/mail_forward/static/src/components/forward_message/forward_message.xml @@ -0,0 +1,32 @@ + + + + + + + + + + diff --git a/mail_forward/static/src/components/message_action_list/message_action_list.xml b/mail_forward/static/src/components/message_action_list/message_action_list.xml new file mode 100644 index 000000000..4f13fa8fb --- /dev/null +++ b/mail_forward/static/src/components/message_action_list/message_action_list.xml @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/mail_forward/static/tests/tours/mail_forward.esm.js b/mail_forward/static/tests/tours/mail_forward.esm.js new file mode 100644 index 000000000..363e1cbe2 --- /dev/null +++ b/mail_forward/static/tests/tours/mail_forward.esm.js @@ -0,0 +1,116 @@ +/** @odoo-module */ + +import tour from "web_tour.tour"; +const contact_steps = [ + ...tour.stepUtils.goToAppSteps("contacts.menu_contacts", "Go to the Contacts."), + { + content: "Search Contact", + trigger: ".o_searchview_input", + run: "text Test", + }, + { + trigger: ".o_menu_item", + content: "Validate search", + run: "click", + }, + { + content: "Switch to list view", + trigger: ".o_list", + run: "click", + }, + { + content: "Open contact", + trigger: ".o_list_table td[name='display_name']:contains('Test')", + }, +]; +tour.register( + "mail_forward.mail_forward_tour", + { + test: true, + url: "/web", + }, + [ + ...contact_steps, + { + content: "Open Chat", + trigger: ".o_ChatterTopbar_buttonSendMessage", + run: "click", + }, + { + content: "Write a message", + trigger: ".o_ComposerTextInput_textarea", + run: "text Hello World", + }, + { + content: "Post a message", + trigger: ".o_Composer_buttonSend", + }, + { + content: "Hover a message", + trigger: "div.o_Message.o-discussion", + run: "click", + }, + { + content: "Forward a message", + trigger: ".o_MessageActionList_actionForward", + run: "click", + }, + { + content: "Select a Forward", + trigger: ".o_field_widget[name=partner_ids] input", + extra_trigger: ".modal-dialog", + run: "text Forward", + }, + { + content: "Valid Forward", + trigger: ".ui-menu-item a:contains(Forward)", + run: "click", + in_modal: false, + }, + { + content: "Send mail", + trigger: "button[name=action_send_mail]", + run: "click", + }, + { + content: "Check Mail Forward", + trigger: + ".o_Message_prettyBody:contains(---------- Forwarded message ---------)", + }, + ] +); + +tour.register( + "mail_forward.mail_note_not_forward_tour", + { + test: true, + url: "/web", + }, + [ + ...contact_steps, + { + content: "Open Chat", + trigger: ".o_ChatterTopbar_buttonLogNote", + run: "click", + }, + { + content: "Write a note", + trigger: ".o_ComposerTextInput_textarea", + run: "text This is a note", + }, + { + content: "Post a note", + trigger: ".o_Composer_buttonSend", + }, + { + content: "Hover a note", + trigger: "div.o_Message.o-not-discussion", + run: "click", + }, + { + content: "Verify that the Forward button does not exist.", + trigger: + "div.o_Message.o-not-discussion:not(.o_MessageActionList_actionForward)", + }, + ] +); diff --git a/mail_forward/tests/__init__.py b/mail_forward/tests/__init__.py new file mode 100644 index 000000000..d83263f3c --- /dev/null +++ b/mail_forward/tests/__init__.py @@ -0,0 +1 @@ +from . import test_mail_forward diff --git a/mail_forward/tests/test_mail_forward.py b/mail_forward/tests/test_mail_forward.py new file mode 100644 index 000000000..b6e632b35 --- /dev/null +++ b/mail_forward/tests/test_mail_forward.py @@ -0,0 +1,77 @@ +# Copyright 2024 Tecnativa - Carlos Lopez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo.tests import Form, RecordCapturer, tagged +from odoo.tests.common import HttpCase + +from odoo.addons.mail.tests.test_mail_composer import TestMailComposer + + +@tagged("post_install", "-at_install") +class TestMailForward(TestMailComposer, HttpCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.partner_follower1 = cls.env["res.partner"].create( + {"name": "Follower1", "email": "follower1@example.com"} + ) + cls.partner_follower2 = cls.env["res.partner"].create( + {"name": "Follower2", "email": "follower2@example.com"} + ) + cls.partner_forward = cls.env["res.partner"].create( + {"name": "Forward", "email": "forward@example.com"} + ) + + def test_01_mail_forward(self): + """ + Send an email to followers + and forward it to another partner. + """ + ctx = { + "default_model": self.test_record._name, + "default_res_id": self.test_record.id, + } + composer_form = Form(self.env["mail.compose.message"].with_context(**ctx)) + composer_form.body = "

Hello

" + composer_form.partner_ids.add(self.partner_follower1) + composer_form.partner_ids.add(self.partner_follower2) + composer = composer_form.save() + with self.mock_mail_gateway(): + composer._action_send_mail() + # Verify recipients of mail.message + message = self.test_record.message_ids[0] + self.assertEqual(len(message.partner_ids), 2) + self.assertIn(self.partner_follower1, message.partner_ids) + self.assertIn(self.partner_follower2, message.partner_ids) + self.assertNotIn(self.partner_forward, message.partner_ids) + self.assertNotIn("---------- Forwarded message ---------", message.body) + # Forward the email + # only the partner_forward should receive the email + action_forward = message.action_wizard_forward() + Message = self.env["mail.compose.message"].with_context( + **action_forward["context"] + ) + composer_form = Form(Message, view=action_forward["views"][0][0]) + composer_form.partner_ids.add(self.partner_forward) + composer = composer_form.save() + message_domain = [ + ("model", "=", self.test_record._name), + ("res_id", "=", self.test_record.id), + ] + with RecordCapturer(self.env["mail.message"], message_domain) as capture: + with self.mock_mail_gateway(): + composer._action_send_mail() + # Verify recipients of mail.message + forward_message = capture.records + self.assertEqual(len(forward_message.partner_ids), 1) + self.assertNotIn(self.partner_follower1, forward_message.partner_ids) + self.assertIn(self.partner_forward, forward_message.partner_ids) + self.assertIn("---------- Forwarded message ---------", forward_message.body) + + def test_02_mail_forward_tour(self): + self.start_tour("/web", "mail_forward.mail_forward_tour", login="admin") + + def test_03_mail_note_not_forward_tour(self): + self.start_tour( + "/web", "mail_forward.mail_note_not_forward_tour", login="admin" + ) diff --git a/mail_forward/wizards/__init__.py b/mail_forward/wizards/__init__.py new file mode 100644 index 000000000..b528d997d --- /dev/null +++ b/mail_forward/wizards/__init__.py @@ -0,0 +1 @@ +from . import mail_compose_message diff --git a/mail_forward/wizards/mail_compose_message.py b/mail_forward/wizards/mail_compose_message.py new file mode 100644 index 000000000..19ccfcb89 --- /dev/null +++ b/mail_forward/wizards/mail_compose_message.py @@ -0,0 +1,39 @@ +# Copyright 2024 Tecnativa - Carlos Lopez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import Command, _, api, models + + +class MailComposeMessage(models.TransientModel): + _inherit = "mail.compose.message" + + @api.model + def get_record_data(self, values): + result = super().get_record_data(values) + re_prefix = _("Re:") + fwd_prefix = _("Fwd:") + if self.env.context.get("message_forwarded_id"): + # remove 'Re: ' prefixes and add 'Fwd:' prefix to the subject + subject = result.get("subject") + if subject and subject.startswith(re_prefix): + subject = "%s %s" % (fwd_prefix, subject[4:]) + result["subject"] = subject + return result + + def _action_send_mail(self, auto_commit=False): + # duplicate attachments from original message + message_forwarded_id = self.env.context.get("message_forwarded_id") + if message_forwarded_id: + message_forwarded = self.env["mail.message"].browse(message_forwarded_id) + for wizard in self: + new_attachment_ids = [] + for attachment in wizard.attachment_ids: + if attachment in message_forwarded.attachment_ids: + new_attachment = attachment.copy( + {"res_model": "mail.compose.message", "res_id": wizard.id} + ) + new_attachment_ids.append(new_attachment.id) + else: + new_attachment_ids.append(attachment.id) + new_attachment_ids.reverse() + wizard.write({"attachment_ids": [Command.set(new_attachment_ids)]}) + return super()._action_send_mail(auto_commit=auto_commit) diff --git a/mail_forward/wizards/mail_compose_message_view.xml b/mail_forward/wizards/mail_compose_message_view.xml new file mode 100644 index 000000000..bda46bed9 --- /dev/null +++ b/mail_forward/wizards/mail_compose_message_view.xml @@ -0,0 +1,27 @@ + + + + mail.compose.message.form.forward + mail.compose.message + primary + + + + + 1 + + + 1 + + + 1 + + + 1 + + + + From 4e6f6d6660bc2c6acf5310659da3416527bb8db1 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Fri, 4 Oct 2024 08:23:30 -0500 Subject: [PATCH 02/44] [FIX] mail_forward: prevent errors during the test tour when web_responsive is installed. --- mail_forward/README.rst | 2 +- mail_forward/__manifest__.py | 2 +- mail_forward/static/description/index.html | 2 +- mail_forward/static/tests/tours/mail_forward.esm.js | 7 ++++++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/mail_forward/README.rst b/mail_forward/README.rst index 99c7b20a1..0988d07dc 100644 --- a/mail_forward/README.rst +++ b/mail_forward/README.rst @@ -7,7 +7,7 @@ Mail Forward Message !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:ce6348512860de33703c2523bb1131aa2bb23a10374db4fb6f66383a7933134f + !! source digest: sha256:f9107727227b807b8c178598ae0b5477c4692574ca4f87786cd4197027e23268 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/mail_forward/__manifest__.py b/mail_forward/__manifest__.py index d693cfb9c..6134ef4a6 100644 --- a/mail_forward/__manifest__.py +++ b/mail_forward/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "Mail Forward Message", - "version": "15.0.1.0.0", + "version": "15.0.1.0.1", "summary": "Forward messages from the chatter of any document to other users.", "author": "Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", diff --git a/mail_forward/static/description/index.html b/mail_forward/static/description/index.html index d236e841f..ad543adef 100644 --- a/mail_forward/static/description/index.html +++ b/mail_forward/static/description/index.html @@ -367,7 +367,7 @@

Mail Forward Message

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:ce6348512860de33703c2523bb1131aa2bb23a10374db4fb6f66383a7933134f +!! source digest: sha256:f9107727227b807b8c178598ae0b5477c4692574ca4f87786cd4197027e23268 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module allows users to forward messages from the chatter of any document to other users, diff --git a/mail_forward/static/tests/tours/mail_forward.esm.js b/mail_forward/static/tests/tours/mail_forward.esm.js index 363e1cbe2..4845900a3 100644 --- a/mail_forward/static/tests/tours/mail_forward.esm.js +++ b/mail_forward/static/tests/tours/mail_forward.esm.js @@ -2,7 +2,12 @@ import tour from "web_tour.tour"; const contact_steps = [ - ...tour.stepUtils.goToAppSteps("contacts.menu_contacts", "Go to the Contacts."), + { + trigger: ".o_navbar_apps_menu button", + }, + { + trigger: '.o_app[data-menu-xmlid="contacts.menu_contacts"]', + }, { content: "Search Contact", trigger: ".o_searchview_input", From 0f6a0e1818fdafb4575f4d093635946ac5137c5e Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Tue, 7 Jan 2025 11:26:12 -0500 Subject: [PATCH 03/44] [IMP] mail_forward: pre-commit auto fixes --- mail_forward/README.rst | 40 ++++++++++++---------- mail_forward/pyproject.toml | 3 ++ mail_forward/readme/CONTRIBUTORS.md | 2 ++ mail_forward/readme/CONTRIBUTORS.rst | 2 -- mail_forward/readme/DESCRIPTION.md | 3 ++ mail_forward/readme/DESCRIPTION.rst | 2 -- mail_forward/readme/USAGE.md | 10 ++++++ mail_forward/readme/USAGE.rst | 8 ----- mail_forward/static/description/index.html | 23 ++++++------- 9 files changed, 51 insertions(+), 42 deletions(-) create mode 100644 mail_forward/pyproject.toml create mode 100644 mail_forward/readme/CONTRIBUTORS.md delete mode 100644 mail_forward/readme/CONTRIBUTORS.rst create mode 100644 mail_forward/readme/DESCRIPTION.md delete mode 100644 mail_forward/readme/DESCRIPTION.rst create mode 100644 mail_forward/readme/USAGE.md delete mode 100644 mail_forward/readme/USAGE.rst diff --git a/mail_forward/README.rst b/mail_forward/README.rst index 0988d07dc..be5a83976 100644 --- a/mail_forward/README.rst +++ b/mail_forward/README.rst @@ -17,19 +17,20 @@ Mail Forward Message :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/15.0/mail_forward + :target: https://github.com/OCA/social/tree/17.0/mail_forward :alt: OCA/social .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/social-15-0/social-15-0-mail_forward + :target: https://translation.odoo-community.org/projects/social-17-0/social-17-0-mail_forward :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=15.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| -This module allows users to forward messages from the chatter of any document to other users, -adding them as followers of the document without notifying the current followers. +This module allows users to forward messages from the chatter of any +document to other users, adding them as followers of the document +without notifying the current followers. **Table of contents** @@ -41,12 +42,14 @@ Usage To use this module, follow these steps: -* Navigate to the chatter of any document. -* Hover the mouse over any message in the chatter (excluding internal notes). -* A Forward icon will appear next to the message. -* Click the button to display a wizard with the message. -* Select the users to forward the message to. -* Click the 'Send Mail' button to send the message to the selected users. +- Navigate to the chatter of any document. +- Hover the mouse over any message in the chatter (excluding internal + notes). +- A Forward icon will appear next to the message. +- Click the button to display a wizard with the message. +- Select the users to forward the message to. +- Click the 'Send Mail' button to send the message to the selected + users. Bug Tracker =========== @@ -54,7 +57,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -62,18 +65,19 @@ Credits ======= Authors -~~~~~~~ +------- * Tecnativa Contributors -~~~~~~~~~~~~ +------------ -* `Tecnativa `_: - * Carlos López +- `Tecnativa `__: + + - Carlos López Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -85,6 +89,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_forward/pyproject.toml b/mail_forward/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/mail_forward/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/mail_forward/readme/CONTRIBUTORS.md b/mail_forward/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..e91f80b2e --- /dev/null +++ b/mail_forward/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- [Tecnativa](https://www.tecnativa.com): + - Carlos López diff --git a/mail_forward/readme/CONTRIBUTORS.rst b/mail_forward/readme/CONTRIBUTORS.rst deleted file mode 100644 index 84a60999d..000000000 --- a/mail_forward/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,2 +0,0 @@ -* `Tecnativa `_: - * Carlos López diff --git a/mail_forward/readme/DESCRIPTION.md b/mail_forward/readme/DESCRIPTION.md new file mode 100644 index 000000000..fe56c5546 --- /dev/null +++ b/mail_forward/readme/DESCRIPTION.md @@ -0,0 +1,3 @@ +This module allows users to forward messages from the chatter of any +document to other users, adding them as followers of the document +without notifying the current followers. diff --git a/mail_forward/readme/DESCRIPTION.rst b/mail_forward/readme/DESCRIPTION.rst deleted file mode 100644 index 10e246711..000000000 --- a/mail_forward/readme/DESCRIPTION.rst +++ /dev/null @@ -1,2 +0,0 @@ -This module allows users to forward messages from the chatter of any document to other users, -adding them as followers of the document without notifying the current followers. diff --git a/mail_forward/readme/USAGE.md b/mail_forward/readme/USAGE.md new file mode 100644 index 000000000..0befa7862 --- /dev/null +++ b/mail_forward/readme/USAGE.md @@ -0,0 +1,10 @@ +To use this module, follow these steps: + +- Navigate to the chatter of any document. +- Hover the mouse over any message in the chatter (excluding internal + notes). +- A Forward icon will appear next to the message. +- Click the button to display a wizard with the message. +- Select the users to forward the message to. +- Click the 'Send Mail' button to send the message to the selected + users. diff --git a/mail_forward/readme/USAGE.rst b/mail_forward/readme/USAGE.rst deleted file mode 100644 index 611bacf03..000000000 --- a/mail_forward/readme/USAGE.rst +++ /dev/null @@ -1,8 +0,0 @@ -To use this module, follow these steps: - -* Navigate to the chatter of any document. -* Hover the mouse over any message in the chatter (excluding internal notes). -* A Forward icon will appear next to the message. -* Click the button to display a wizard with the message. -* Select the users to forward the message to. -* Click the 'Send Mail' button to send the message to the selected users. diff --git a/mail_forward/static/description/index.html b/mail_forward/static/description/index.html index ad543adef..d97a61f76 100644 --- a/mail_forward/static/description/index.html +++ b/mail_forward/static/description/index.html @@ -369,9 +369,10 @@

Mail Forward Message

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:f9107727227b807b8c178598ae0b5477c4692574ca4f87786cd4197027e23268 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

-

This module allows users to forward messages from the chatter of any document to other users, -adding them as followers of the document without notifying the current followers.

+

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

+

This module allows users to forward messages from the chatter of any +document to other users, adding them as followers of the document +without notifying the current followers.

Table of contents

    @@ -390,11 +391,13 @@

    Usage

    To use this module, follow these steps:

    • Navigate to the chatter of any document.
    • -
    • Hover the mouse over any message in the chatter (excluding internal notes).
    • +
    • Hover the mouse over any message in the chatter (excluding internal +notes).
    • A Forward icon will appear next to the message.
    • Click the button to display a wizard with the message.
    • Select the users to forward the message to.
    • -
    • Click the ‘Send Mail’ button to send the message to the selected users.
    • +
    • Click the ‘Send Mail’ button to send the message to the selected +users.
@@ -402,7 +405,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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -416,13 +419,9 @@

Authors

Contributors

@@ -435,7 +434,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 968cc1b6f2980d33b849241057d1f04127b04464 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Wed, 22 Jan 2025 10:53:11 -0500 Subject: [PATCH 04/44] [MIG] mail_forward: Migration to version 17.0 --- mail_forward/__manifest__.py | 8 +- mail_forward/models/mail_message.py | 2 +- mail_forward/models/mail_thread.py | 4 +- .../forward_message/forward_message.esm.js | 46 +++++------ .../forward_message/forward_message.xml | 48 ++++++------ .../message_action_list.xml | 12 --- .../src/core/common/message_actions.esm.js | 17 +++++ .../static/tests/tours/mail_forward.esm.js | 76 +++++-------------- mail_forward/tests/test_mail_forward.py | 9 ++- mail_forward/wizards/mail_compose_message.py | 2 +- .../wizards/mail_compose_message_view.xml | 2 +- 11 files changed, 99 insertions(+), 127 deletions(-) delete mode 100644 mail_forward/static/src/components/message_action_list/message_action_list.xml create mode 100644 mail_forward/static/src/core/common/message_actions.esm.js diff --git a/mail_forward/__manifest__.py b/mail_forward/__manifest__.py index 6134ef4a6..7eb972af2 100644 --- a/mail_forward/__manifest__.py +++ b/mail_forward/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "Mail Forward Message", - "version": "15.0.1.0.1", + "version": "17.0.1.0.0", "summary": "Forward messages from the chatter of any document to other users.", "author": "Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", @@ -12,10 +12,8 @@ ], "assets": { "web.assets_backend": [ - "mail_forward/static/src/components/**/*.esm.js", - ], - "web.assets_qweb": [ - "mail_forward/static/src/components/*/*.xml", + "mail_forward/static/src/**/*.esm.js", + "mail_forward/static/src/**/*.xml", ], "web.assets_tests": [ "mail_forward/static/tests/tours/**/*", diff --git a/mail_forward/models/mail_message.py b/mail_forward/models/mail_message.py index b5bacd621..57a68cfbe 100644 --- a/mail_forward/models/mail_message.py +++ b/mail_forward/models/mail_message.py @@ -17,7 +17,7 @@ def action_wizard_forward(self): action["views"] = [(view.id, view.type)] action["context"] = { "default_model": self.model, - "default_res_id": self.res_id, + "default_res_ids": [self.res_id], "default_composition_mode": "comment", "default_body": self._build_message_body_for_forward(), "default_attachment_ids": self.attachment_ids.ids, diff --git a/mail_forward/models/mail_thread.py b/mail_forward/models/mail_thread.py index ea0bfac3e..babb29db5 100644 --- a/mail_forward/models/mail_thread.py +++ b/mail_forward/models/mail_thread.py @@ -6,8 +6,8 @@ class MailThread(models.AbstractModel): _inherit = "mail.thread" - def _notify_compute_recipients(self, message, msg_vals): - recipients_data = super()._notify_compute_recipients(message, msg_vals) + def _notify_get_recipients(self, message, msg_vals, **kwargs): + recipients_data = super()._notify_get_recipients(message, msg_vals, **kwargs) # only notify to explicit partners, remove others(followers). if self.env.context.get("message_forwarded_id"): current_partners_ids = message.partner_ids.ids diff --git a/mail_forward/static/src/components/forward_message/forward_message.esm.js b/mail_forward/static/src/components/forward_message/forward_message.esm.js index 654b74a07..0fc7c0ca2 100644 --- a/mail_forward/static/src/components/forward_message/forward_message.esm.js +++ b/mail_forward/static/src/components/forward_message/forward_message.esm.js @@ -2,35 +2,31 @@ /* Copyright 2024 Tecnativa - Carlos Lopez License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). */ -import {registerMessagingComponent} from "@mail/utils/messaging_component"; const {Component} = owl; +import {useService} from "@web/core/utils/hooks"; export class ForwardMessage extends Component { + setup() { + super.setup(); + this.threadService = useService("mail.thread"); + } async onClickForwardMessage() { const composer = this.props.message.originThread.composer; - const action = await this.env.services.rpc({ - model: "mail.message", - method: "action_wizard_forward", - args: [[this.props.message.id]], - }); - this.env.bus.trigger("do-action", { - action: action, - options: { - additional_context: { - active_id: this.props.message.id, - active_ids: [this.props.message.id], - active_model: "mail.message", - }, - on_close: () => { - if (composer.exists()) { - composer._reset(); - if (composer.activeThread) { - composer.activeThread.loadNewMessages(); - composer.activeThread.refreshFollowers(); - composer.activeThread.fetchAndUpdateSuggestedRecipients(); - } - } - }, + const action = await this.env.services.orm.call( + "mail.message", + "action_wizard_forward", + [[this.props.message.id]] + ); + this.env.services.action.doAction(action, { + additionalContext: { + active_id: this.props.message.id, + active_ids: [this.props.message.id], + active_model: "mail.message", + }, + onClose: () => { + if (composer.thread) { + this.threadService.fetchNewMessages(composer.thread); + } }, }); } @@ -40,5 +36,3 @@ ForwardMessage.template = "mail_forward.ForwardMessage"; ForwardMessage.props = { message: Object, }; - -registerMessagingComponent(ForwardMessage); diff --git a/mail_forward/static/src/components/forward_message/forward_message.xml b/mail_forward/static/src/components/forward_message/forward_message.xml index 0da6d778c..070664668 100644 --- a/mail_forward/static/src/components/forward_message/forward_message.xml +++ b/mail_forward/static/src/components/forward_message/forward_message.xml @@ -1,32 +1,34 @@ - - +
- - - - + + + + + + Forward +
diff --git a/mail_forward/static/src/components/message_action_list/message_action_list.xml b/mail_forward/static/src/components/message_action_list/message_action_list.xml deleted file mode 100644 index 4f13fa8fb..000000000 --- a/mail_forward/static/src/components/message_action_list/message_action_list.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - diff --git a/mail_forward/static/src/core/common/message_actions.esm.js b/mail_forward/static/src/core/common/message_actions.esm.js new file mode 100644 index 000000000..37b7fb019 --- /dev/null +++ b/mail_forward/static/src/core/common/message_actions.esm.js @@ -0,0 +1,17 @@ +/* @odoo-module */ +/* Copyright 2024 Tecnativa - Carlos Lopez + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +*/ + +import {_t} from "@web/core/l10n/translation"; +import {ForwardMessage} from "../../components/forward_message/forward_message.esm"; +import {messageActionsRegistry} from "@mail/core/common/message_actions"; + +messageActionsRegistry.add("forward", { + callComponent: ForwardMessage, + props: (component) => ({message: component.props.message}), + condition: (component) => + component.props.message.is_discussion && !component.props.message.is_note, + sequence: 15, + title: _t("Forward"), +}); diff --git a/mail_forward/static/tests/tours/mail_forward.esm.js b/mail_forward/static/tests/tours/mail_forward.esm.js index 4845900a3..3f4b720fc 100644 --- a/mail_forward/static/tests/tours/mail_forward.esm.js +++ b/mail_forward/static/tests/tours/mail_forward.esm.js @@ -1,6 +1,7 @@ /** @odoo-module */ -import tour from "web_tour.tour"; +import {registry} from "@web/core/registry"; + const contact_steps = [ { trigger: ".o_navbar_apps_menu button", @@ -11,7 +12,7 @@ const contact_steps = [ { content: "Search Contact", trigger: ".o_searchview_input", - run: "text Test", + run: "text Test Forward", }, { trigger: ".o_menu_item", @@ -25,39 +26,22 @@ const contact_steps = [ }, { content: "Open contact", - trigger: ".o_list_table td[name='display_name']:contains('Test')", + trigger: ".o_list_table td[name='complete_name']:contains('Test Forward')", }, ]; -tour.register( - "mail_forward.mail_forward_tour", - { - test: true, - url: "/web", - }, - [ +registry.category("web_tour.tours").add("mail_forward.mail_forward_tour", { + test: true, + url: "/web", + steps: () => [ ...contact_steps, - { - content: "Open Chat", - trigger: ".o_ChatterTopbar_buttonSendMessage", - run: "click", - }, - { - content: "Write a message", - trigger: ".o_ComposerTextInput_textarea", - run: "text Hello World", - }, - { - content: "Post a message", - trigger: ".o_Composer_buttonSend", - }, { content: "Hover a message", - trigger: "div.o_Message.o-discussion", + trigger: "div.o-mail-Message[aria-label='Message'] button.dropdown-toggle", run: "click", }, { content: "Forward a message", - trigger: ".o_MessageActionList_actionForward", + trigger: ".mail_forward_message", run: "click", }, { @@ -80,42 +64,24 @@ tour.register( { content: "Check Mail Forward", trigger: - ".o_Message_prettyBody:contains(---------- Forwarded message ---------)", + "div.o-mail-Message[aria-label='Message']:contains(---------- Forwarded message ---------)", }, - ] -); + ], +}); -tour.register( - "mail_forward.mail_note_not_forward_tour", - { - test: true, - url: "/web", - }, - [ +registry.category("web_tour.tours").add("mail_forward.mail_note_not_forward_tour", { + test: true, + url: "/web", + steps: () => [ ...contact_steps, - { - content: "Open Chat", - trigger: ".o_ChatterTopbar_buttonLogNote", - run: "click", - }, - { - content: "Write a note", - trigger: ".o_ComposerTextInput_textarea", - run: "text This is a note", - }, - { - content: "Post a note", - trigger: ".o_Composer_buttonSend", - }, { content: "Hover a note", - trigger: "div.o_Message.o-not-discussion", + trigger: "div.o-mail-Message[aria-label='Note']", run: "click", }, { content: "Verify that the Forward button does not exist.", - trigger: - "div.o_Message.o-not-discussion:not(.o_MessageActionList_actionForward)", + trigger: "div.o-mail-Message[aria-label='Note']:not(.mail_forward_message)", }, - ] -); + ], +}); diff --git a/mail_forward/tests/test_mail_forward.py b/mail_forward/tests/test_mail_forward.py index b6e632b35..88f311bf4 100644 --- a/mail_forward/tests/test_mail_forward.py +++ b/mail_forward/tests/test_mail_forward.py @@ -12,6 +12,7 @@ class TestMailForward(TestMailComposer, HttpCase): @classmethod def setUpClass(cls): super().setUpClass() + cls.test_record.write({"name": "Test Forward", "email": "test@example.com"}) cls.partner_follower1 = cls.env["res.partner"].create( {"name": "Follower1", "email": "follower1@example.com"} ) @@ -29,7 +30,7 @@ def test_01_mail_forward(self): """ ctx = { "default_model": self.test_record._name, - "default_res_id": self.test_record.id, + "default_res_ids": [self.test_record.id], } composer_form = Form(self.env["mail.compose.message"].with_context(**ctx)) composer_form.body = "

Hello

" @@ -69,9 +70,15 @@ def test_01_mail_forward(self): self.assertIn("---------- Forwarded message ---------", forward_message.body) def test_02_mail_forward_tour(self): + self.test_record.message_post( + body="Hello World", message_type="comment", subtype_xmlid="mail.mt_comment" + ) self.start_tour("/web", "mail_forward.mail_forward_tour", login="admin") def test_03_mail_note_not_forward_tour(self): + self.test_record.message_post( + body="This is a note", message_type="comment", subtype_xmlid="mail.mt_note" + ) self.start_tour( "/web", "mail_forward.mail_note_not_forward_tour", login="admin" ) diff --git a/mail_forward/wizards/mail_compose_message.py b/mail_forward/wizards/mail_compose_message.py index 19ccfcb89..cb36069e2 100644 --- a/mail_forward/wizards/mail_compose_message.py +++ b/mail_forward/wizards/mail_compose_message.py @@ -15,7 +15,7 @@ def get_record_data(self, values): # remove 'Re: ' prefixes and add 'Fwd:' prefix to the subject subject = result.get("subject") if subject and subject.startswith(re_prefix): - subject = "%s %s" % (fwd_prefix, subject[4:]) + subject = f"{fwd_prefix} {subject[4:]}" result["subject"] = subject return result diff --git a/mail_forward/wizards/mail_compose_message_view.xml b/mail_forward/wizards/mail_compose_message_view.xml index bda46bed9..1327be8d2 100644 --- a/mail_forward/wizards/mail_compose_message_view.xml +++ b/mail_forward/wizards/mail_compose_message_view.xml @@ -17,7 +17,7 @@ 1 1 From d1c1b771642b559b290df785642d3ff8c6f40281 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Wed, 22 Jan 2025 10:54:38 -0500 Subject: [PATCH 05/44] [FIX] mail_forward: Render message actions correctly with callComponent Currently, Odoo only renders the callComponent for quick actions (2 or 3 actions). However, the remaining actions, rendered as DropdownItem, do not invoke the callComponent. This commit ensures that the rendering is consistent in both cases. Complementary to: #131426 TODO: This code should be removed once the issue is fixed in the Odoo core. https://github.com/odoo/odoo/pull/194643 --- mail_forward/README.rst | 2 +- mail_forward/i18n/mail_forward.pot | 26 +++++++++++++--- mail_forward/static/description/index.html | 2 +- .../static/src/core/common/message.xml | 31 +++++++++++++++++++ 4 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 mail_forward/static/src/core/common/message.xml diff --git a/mail_forward/README.rst b/mail_forward/README.rst index be5a83976..330d938ad 100644 --- a/mail_forward/README.rst +++ b/mail_forward/README.rst @@ -7,7 +7,7 @@ Mail Forward Message !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:f9107727227b807b8c178598ae0b5477c4692574ca4f87786cd4197027e23268 + !! source digest: sha256:aaa71d008cc1c6a1fe737e7a99a760431d3442126800ceb78f5c6a09f0b01727 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/mail_forward/i18n/mail_forward.pot b/mail_forward/i18n/mail_forward.pot index cf0234fed..17da3d1ee 100644 --- a/mail_forward/i18n/mail_forward.pot +++ b/mail_forward/i18n/mail_forward.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -14,12 +14,14 @@ msgstr "" "Plural-Forms: \n" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #, python-format msgid "---------- Forwarded message ---------" msgstr "" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #, python-format msgid "Date" @@ -36,7 +38,16 @@ msgid "Email composition wizard" msgstr "" #. module: mail_forward -#. openerp-web +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#: code:addons/mail_forward/static/src/core/common/message_actions.esm.js:0 +#, python-format +msgid "Forward" +msgstr "" + +#. module: mail_forward +#. odoo-javascript +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 @@ -45,33 +56,35 @@ msgid "Forward Message" msgstr "" #. module: mail_forward -#. openerp-web +#. odoo-javascript #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 #, python-format msgid "Forward Message Center" msgstr "" #. module: mail_forward -#. openerp-web +#. odoo-javascript #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 #, python-format msgid "Forward Message Left" msgstr "" #. module: mail_forward -#. openerp-web +#. odoo-javascript #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 #, python-format msgid "Forward Message Right" msgstr "" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #, python-format msgid "From" msgstr "" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/wizards/mail_compose_message.py:0 #, python-format msgid "Fwd:" @@ -83,18 +96,21 @@ msgid "Message" msgstr "" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/wizards/mail_compose_message.py:0 #, python-format msgid "Re:" msgstr "" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #, python-format msgid "Subject" msgstr "" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #, python-format msgid "To" diff --git a/mail_forward/static/description/index.html b/mail_forward/static/description/index.html index d97a61f76..abaa040f4 100644 --- a/mail_forward/static/description/index.html +++ b/mail_forward/static/description/index.html @@ -367,7 +367,7 @@

Mail Forward Message

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:f9107727227b807b8c178598ae0b5477c4692574ca4f87786cd4197027e23268 +!! source digest: sha256:aaa71d008cc1c6a1fe737e7a99a760431d3442126800ceb78f5c6a09f0b01727 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module allows users to forward messages from the chatter of any diff --git a/mail_forward/static/src/core/common/message.xml b/mail_forward/static/src/core/common/message.xml new file mode 100644 index 000000000..5c43a72c6 --- /dev/null +++ b/mail_forward/static/src/core/common/message.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + From 67cf9950723d49ead4ca4ba8e1d7ed393e181ba0 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 22 Jan 2025 19:52:06 +0000 Subject: [PATCH 06/44] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: social-17.0/social-17.0-mail_forward Translate-URL: https://translation.odoo-community.org/projects/social-17-0/social-17-0-mail_forward/ --- mail_forward/i18n/es.po | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/mail_forward/i18n/es.po b/mail_forward/i18n/es.po index c33ce8127..79f1c7433 100644 --- a/mail_forward/i18n/es.po +++ b/mail_forward/i18n/es.po @@ -18,12 +18,14 @@ msgstr "" "X-Generator: Poedit 3.0.1\n" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #, python-format msgid "---------- Forwarded message ---------" msgstr "---------- Mensaje reenviado ---------" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #, python-format msgid "Date" @@ -40,7 +42,16 @@ msgid "Email composition wizard" msgstr "Asistente de composición de correos electrónicos" #. module: mail_forward -#. openerp-web +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#: code:addons/mail_forward/static/src/core/common/message_actions.esm.js:0 +#, python-format +msgid "Forward" +msgstr "" + +#. module: mail_forward +#. odoo-javascript +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 #, python-format @@ -48,12 +59,35 @@ msgid "Forward Message" msgstr "Reenviar mensaje" #. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Center" +msgstr "" + +#. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Left" +msgstr "" + +#. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Right" +msgstr "" + +#. module: mail_forward +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #, python-format msgid "From" msgstr "De" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/wizards/mail_compose_message.py:0 #, python-format msgid "Fwd:" @@ -65,18 +99,21 @@ msgid "Message" msgstr "Mensaje" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/wizards/mail_compose_message.py:0 #, python-format msgid "Re:" msgstr "" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #, python-format msgid "Subject" msgstr "Asunto" #. module: mail_forward +#. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #, python-format msgid "To" From cc51a33cecf903e973ba011a0f8650bb45387b09 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Thu, 23 Jan 2025 09:41:59 -0500 Subject: [PATCH 07/44] Revert "[FIX] mail_forward: Render message actions correctly with callComponent" This reverts commit ea11305f949dd57a5e27b07ade5a39fe668af780. --- mail_forward/README.rst | 2 +- mail_forward/__manifest__.py | 2 +- mail_forward/static/description/index.html | 2 +- .../static/src/core/common/message.xml | 31 ------------------- .../src/core/common/message_actions.esm.js | 2 +- 5 files changed, 4 insertions(+), 35 deletions(-) delete mode 100644 mail_forward/static/src/core/common/message.xml diff --git a/mail_forward/README.rst b/mail_forward/README.rst index 330d938ad..383983f52 100644 --- a/mail_forward/README.rst +++ b/mail_forward/README.rst @@ -7,7 +7,7 @@ Mail Forward Message !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:aaa71d008cc1c6a1fe737e7a99a760431d3442126800ceb78f5c6a09f0b01727 + !! source digest: sha256:0307037e538d1434f582ad57d4235cacac01059cfb7bb41d178ea058105525e0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/mail_forward/__manifest__.py b/mail_forward/__manifest__.py index 7eb972af2..19534c2d1 100644 --- a/mail_forward/__manifest__.py +++ b/mail_forward/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "Mail Forward Message", - "version": "17.0.1.0.0", + "version": "17.0.1.0.1", "summary": "Forward messages from the chatter of any document to other users.", "author": "Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", diff --git a/mail_forward/static/description/index.html b/mail_forward/static/description/index.html index abaa040f4..3d1338e7d 100644 --- a/mail_forward/static/description/index.html +++ b/mail_forward/static/description/index.html @@ -367,7 +367,7 @@

Mail Forward Message

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:aaa71d008cc1c6a1fe737e7a99a760431d3442126800ceb78f5c6a09f0b01727 +!! source digest: sha256:0307037e538d1434f582ad57d4235cacac01059cfb7bb41d178ea058105525e0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module allows users to forward messages from the chatter of any diff --git a/mail_forward/static/src/core/common/message.xml b/mail_forward/static/src/core/common/message.xml deleted file mode 100644 index 5c43a72c6..000000000 --- a/mail_forward/static/src/core/common/message.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/mail_forward/static/src/core/common/message_actions.esm.js b/mail_forward/static/src/core/common/message_actions.esm.js index 37b7fb019..dcc9ace71 100644 --- a/mail_forward/static/src/core/common/message_actions.esm.js +++ b/mail_forward/static/src/core/common/message_actions.esm.js @@ -12,6 +12,6 @@ messageActionsRegistry.add("forward", { props: (component) => ({message: component.props.message}), condition: (component) => component.props.message.is_discussion && !component.props.message.is_note, - sequence: 15, + sequence: 75, title: _t("Forward"), }); From de96aa5ba2e7edc7fb61ab4fd15f7905311ba39f Mon Sep 17 00:00:00 2001 From: mymage Date: Sat, 25 Jan 2025 12:51:17 +0000 Subject: [PATCH 08/44] Added translation using Weblate (Italian) --- mail_forward/i18n/it.po | 120 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 mail_forward/i18n/it.po diff --git a/mail_forward/i18n/it.po b/mail_forward/i18n/it.po new file mode 100644 index 000000000..44e21bdb7 --- /dev/null +++ b/mail_forward/i18n/it.po @@ -0,0 +1,120 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_forward +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-01-25 15:06+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\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" +"X-Generator: Weblate 5.6.2\n" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "---------- Forwarded message ---------" +msgstr "---------- Messaggio inoltrato ---------" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "Date" +msgstr "Data" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_thread +msgid "Email Thread" +msgstr "Discussione e-mail" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_compose_message +msgid "Email composition wizard" +msgstr "Procedura guidata creazione e-mail" + +#. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#: code:addons/mail_forward/static/src/core/common/message_actions.esm.js:0 +#, python-format +msgid "Forward" +msgstr "Inoltra" + +#. module: mail_forward +#. odoo-javascript +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message" +msgstr "Inoltra messaggio" + +#. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Center" +msgstr "Centro inoltro messaggio" + +#. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Left" +msgstr "Inoltra messaggio precedente" + +#. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Right" +msgstr "Inoltra messaggio successivo" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "From" +msgstr "Da" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/wizards/mail_compose_message.py:0 +#, python-format +msgid "Fwd:" +msgstr "In.:" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_message +msgid "Message" +msgstr "Messaggio" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/wizards/mail_compose_message.py:0 +#, python-format +msgid "Re:" +msgstr "Re:" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "Subject" +msgstr "Oggetto" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "To" +msgstr "A" From b9749a10182f7f1662e379e1eed7c9d07912e657 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Fri, 24 Jan 2025 12:38:24 -0500 Subject: [PATCH 09/44] =?UTF-8?q?[IMP]=20mail=5Fforward:=20Add=20option=20?= =?UTF-8?q?to=20forward=20a=20message=20to=20another=20thread=20This=20opt?= =?UTF-8?q?ion=20posts=20a=20new=20message=20in=20the=20other=20thread,=20?= =?UTF-8?q?including=20the=20attachments,=20but=20does=20not=20add=20them?= =?UTF-8?q?=20as=20followers=E2=80=94only=20notifying=20the=20current=20fo?= =?UTF-8?q?llowers=20of=20the=20other=20thread.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mail_forward/README.rst | 37 +++- mail_forward/__manifest__.py | 7 +- mail_forward/i18n/es.po | 54 +++++- mail_forward/i18n/mail_forward.pot | 40 ++++ mail_forward/models/__init__.py | 1 + mail_forward/models/ir_model.py | 9 + mail_forward/models/mail_message.py | 2 - mail_forward/models/mail_thread.py | 5 +- mail_forward/readme/CONFIGURE.md | 5 + mail_forward/readme/DESCRIPTION.md | 6 +- mail_forward/readme/USAGE.md | 7 +- mail_forward/static/description/index.html | 57 ++++-- mail_forward/tests/test_mail_forward.py | 60 +++++- mail_forward/views/ir_model_views.xml | 19 ++ mail_forward/wizards/mail_compose_message.py | 179 ++++++++++++++++-- .../wizards/mail_compose_message_view.xml | 19 +- 16 files changed, 442 insertions(+), 65 deletions(-) create mode 100644 mail_forward/models/ir_model.py create mode 100644 mail_forward/readme/CONFIGURE.md create mode 100644 mail_forward/views/ir_model_views.xml diff --git a/mail_forward/README.rst b/mail_forward/README.rst index 383983f52..330585481 100644 --- a/mail_forward/README.rst +++ b/mail_forward/README.rst @@ -7,7 +7,7 @@ Mail Forward Message !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:0307037e538d1434f582ad57d4235cacac01059cfb7bb41d178ea058105525e0 + !! source digest: sha256:98469f5ef781e247c2d83df22630a8fa703c8ea151e4dbf3c35686d9997d4f09 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -29,14 +29,29 @@ Mail Forward Message |badge1| |badge2| |badge3| |badge4| |badge5| This module allows users to forward messages from the chatter of any -document to other users, adding them as followers of the document -without notifying the current followers. +document to: + +- Other users in the same thread, adding them as followers of the + document without notifying the current followers. +- Another thread, but not adding them as followers—only notifying the + current followers of the other thread. **Table of contents** .. contents:: :local: +Configuration +============= + +To enable a model to forward messages to another thread: + +- With debug mode activated, go to + ``Settings -> Technical -> Database Structure -> Models``. +- Search for the model you wish to enable. +- Mark the option ``Enable Forward To`` and save. Transient models or + those without mail thread won't have this check visible. + Usage ===== @@ -47,9 +62,11 @@ To use this module, follow these steps: notes). - A Forward icon will appear next to the message. - Click the button to display a wizard with the message. -- Select the users to forward the message to. -- Click the 'Send Mail' button to send the message to the selected - users. +- Select the forward type (current thread or another thread). +- Select the users to forward the message to, or select the other thread + according to the previous step. +- Click the 'Send Mail' button to send the message to the selected users + or thread. Bug Tracker =========== @@ -89,6 +106,14 @@ 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. +.. |maintainer-carlos-lopez-tecnativa| image:: https://github.com/carlos-lopez-tecnativa.png?size=40px + :target: https://github.com/carlos-lopez-tecnativa + :alt: carlos-lopez-tecnativa + +Current `maintainer `__: + +|maintainer-carlos-lopez-tecnativa| + 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_forward/__manifest__.py b/mail_forward/__manifest__.py index 19534c2d1..c396649fe 100644 --- a/mail_forward/__manifest__.py +++ b/mail_forward/__manifest__.py @@ -2,14 +2,12 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "Mail Forward Message", - "version": "17.0.1.0.1", + "version": "17.0.2.0.0", "summary": "Forward messages from the chatter of any document to other users.", "author": "Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", "depends": ["mail", "contacts"], - "data": [ - "wizards/mail_compose_message_view.xml", - ], + "data": ["wizards/mail_compose_message_view.xml", "views/ir_model_views.xml"], "assets": { "web.assets_backend": [ "mail_forward/static/src/**/*.esm.js", @@ -22,4 +20,5 @@ "installable": True, "auto_install": False, "license": "AGPL-3", + "maintainers": ["carlos-lopez-tecnativa"], } diff --git a/mail_forward/i18n/es.po b/mail_forward/i18n/es.po index 79f1c7433..62f8ebcf7 100644 --- a/mail_forward/i18n/es.po +++ b/mail_forward/i18n/es.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-02 12:25+0000\n" -"PO-Revision-Date: 2024-10-02 07:27-0500\n" +"POT-Creation-Date: 2025-01-27 17:26+0000\n" +"PO-Revision-Date: 2025-01-27 12:28-0500\n" "Last-Translator: \n" "Language-Team: \n" "Language: es\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.5\n" #. module: mail_forward #. odoo-python @@ -24,6 +24,16 @@ msgstr "" msgid "---------- Forwarded message ---------" msgstr "---------- Mensaje reenviado ---------" +#. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__another_thread +msgid "Another thread" +msgstr "Otro hilo" + +#. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__current_thread +msgid "Current thread" +msgstr "Hilo actual" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 @@ -39,7 +49,22 @@ msgstr "Hilo de correos electrónicos" #. module: mail_forward #: model:ir.model,name:mail_forward.model_mail_compose_message msgid "Email composition wizard" -msgstr "Asistente de composición de correos electrónicos" +msgstr "Asistente de redacción de correo electrónico" + +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_ir_model__enable_forward_to +msgid "Enable Forward To" +msgstr "Habilitar reenvío a" + +#. module: mail_forward +#: model:ir.model.fields,help:mail_forward.field_ir_model__enable_forward_to +msgid "Enable forwarding messages to records of this model." +msgstr "Habilita el reenvío de mensajes a registros de este modelo." + +#. module: mail_forward +#: model_terms:ir.ui.view,arch_db:mail_forward.mail_compose_message_forward_form +msgid "Followers to notify" +msgstr "Seguidores a notificar" #. module: mail_forward #. odoo-javascript @@ -47,7 +72,7 @@ msgstr "Asistente de composición de correos electrónicos" #: code:addons/mail_forward/static/src/core/common/message_actions.esm.js:0 #, python-format msgid "Forward" -msgstr "" +msgstr "Reenviar" #. module: mail_forward #. odoo-javascript @@ -79,6 +104,11 @@ msgstr "" msgid "Forward Message Right" msgstr "" +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_type +msgid "Forward Type" +msgstr "Tipo de reenvío" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 @@ -91,13 +121,18 @@ msgstr "De" #: code:addons/mail_forward/wizards/mail_compose_message.py:0 #, python-format msgid "Fwd:" -msgstr "" +msgstr "RV:" #. module: mail_forward #: model:ir.model,name:mail_forward.model_mail_message msgid "Message" msgstr "Mensaje" +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_ir_model +msgid "Models" +msgstr "Modelos" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/wizards/mail_compose_message.py:0 @@ -112,6 +147,11 @@ msgstr "" msgid "Subject" msgstr "Asunto" +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_thread +msgid "Thread to forward" +msgstr "Hilo a reenviar" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 diff --git a/mail_forward/i18n/mail_forward.pot b/mail_forward/i18n/mail_forward.pot index 17da3d1ee..825a81c03 100644 --- a/mail_forward/i18n/mail_forward.pot +++ b/mail_forward/i18n/mail_forward.pot @@ -20,6 +20,16 @@ msgstr "" msgid "---------- Forwarded message ---------" msgstr "" +#. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__another_thread +msgid "Another thread" +msgstr "" + +#. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__current_thread +msgid "Current thread" +msgstr "" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 @@ -37,6 +47,21 @@ msgstr "" msgid "Email composition wizard" msgstr "" +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_ir_model__enable_forward_to +msgid "Enable Forward To" +msgstr "" + +#. module: mail_forward +#: model:ir.model.fields,help:mail_forward.field_ir_model__enable_forward_to +msgid "Enable forwarding messages to records of this model." +msgstr "" + +#. module: mail_forward +#: model_terms:ir.ui.view,arch_db:mail_forward.mail_compose_message_forward_form +msgid "Followers to notify" +msgstr "" + #. module: mail_forward #. odoo-javascript #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 @@ -76,6 +101,11 @@ msgstr "" msgid "Forward Message Right" msgstr "" +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_type +msgid "Forward Type" +msgstr "" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 @@ -95,6 +125,11 @@ msgstr "" msgid "Message" msgstr "" +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_ir_model +msgid "Models" +msgstr "" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/wizards/mail_compose_message.py:0 @@ -109,6 +144,11 @@ msgstr "" msgid "Subject" msgstr "" +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_thread +msgid "Thread to forward" +msgstr "" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 diff --git a/mail_forward/models/__init__.py b/mail_forward/models/__init__.py index eccc2881b..c5692d315 100644 --- a/mail_forward/models/__init__.py +++ b/mail_forward/models/__init__.py @@ -1,2 +1,3 @@ +from . import ir_model from . import mail_message from . import mail_thread diff --git a/mail_forward/models/ir_model.py b/mail_forward/models/ir_model.py new file mode 100644 index 000000000..8ded28e17 --- /dev/null +++ b/mail_forward/models/ir_model.py @@ -0,0 +1,9 @@ +from odoo import fields, models + + +class IrModel(models.Model): + _inherit = "ir.model" + + enable_forward_to = fields.Boolean( + help="Enable forwarding messages to records of this model." + ) diff --git a/mail_forward/models/mail_message.py b/mail_forward/models/mail_message.py index 57a68cfbe..a6c18e3db 100644 --- a/mail_forward/models/mail_message.py +++ b/mail_forward/models/mail_message.py @@ -19,8 +19,6 @@ def action_wizard_forward(self): "default_model": self.model, "default_res_ids": [self.res_id], "default_composition_mode": "comment", - "default_body": self._build_message_body_for_forward(), - "default_attachment_ids": self.attachment_ids.ids, "default_is_log": False, "default_notify": True, "force_email": True, diff --git a/mail_forward/models/mail_thread.py b/mail_forward/models/mail_thread.py index babb29db5..919c8747d 100644 --- a/mail_forward/models/mail_thread.py +++ b/mail_forward/models/mail_thread.py @@ -9,7 +9,10 @@ class MailThread(models.AbstractModel): def _notify_get_recipients(self, message, msg_vals, **kwargs): recipients_data = super()._notify_get_recipients(message, msg_vals, **kwargs) # only notify to explicit partners, remove others(followers). - if self.env.context.get("message_forwarded_id"): + if ( + self.env.context.get("message_forwarded_id") + and self.env.context.get("forward_type", "") == "current_thread" + ): current_partners_ids = message.partner_ids.ids new_recipeints = [] for recipeint in recipients_data: diff --git a/mail_forward/readme/CONFIGURE.md b/mail_forward/readme/CONFIGURE.md new file mode 100644 index 000000000..68629226b --- /dev/null +++ b/mail_forward/readme/CONFIGURE.md @@ -0,0 +1,5 @@ +To enable a model to forward messages to another thread: + +- With debug mode activated, go to `Settings -> Technical -> Database Structure -> Models`. +- Search for the model you wish to enable. +- Mark the option `Enable Forward To` and save. Transient models or those without mail thread won't have this check visible. \ No newline at end of file diff --git a/mail_forward/readme/DESCRIPTION.md b/mail_forward/readme/DESCRIPTION.md index fe56c5546..872600afc 100644 --- a/mail_forward/readme/DESCRIPTION.md +++ b/mail_forward/readme/DESCRIPTION.md @@ -1,3 +1,3 @@ -This module allows users to forward messages from the chatter of any -document to other users, adding them as followers of the document -without notifying the current followers. +This module allows users to forward messages from the chatter of any document to: +- Other users in the same thread, adding them as followers of the document without notifying the current followers. +- Another thread, but not adding them as followers—only notifying the current followers of the other thread. \ No newline at end of file diff --git a/mail_forward/readme/USAGE.md b/mail_forward/readme/USAGE.md index 0befa7862..18fc63e58 100644 --- a/mail_forward/readme/USAGE.md +++ b/mail_forward/readme/USAGE.md @@ -5,6 +5,7 @@ To use this module, follow these steps: notes). - A Forward icon will appear next to the message. - Click the button to display a wizard with the message. -- Select the users to forward the message to. -- Click the 'Send Mail' button to send the message to the selected - users. +- Select the forward type (current thread or another thread). +- Select the users to forward the message to, or select the other thread according to the previous step. +- Click the 'Send Mail' button to send the message to the selected users or thread. + \ No newline at end of file diff --git a/mail_forward/static/description/index.html b/mail_forward/static/description/index.html index 3d1338e7d..69529d530 100644 --- a/mail_forward/static/description/index.html +++ b/mail_forward/static/description/index.html @@ -367,27 +367,44 @@

Mail Forward Message

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:0307037e538d1434f582ad57d4235cacac01059cfb7bb41d178ea058105525e0 +!! source digest: sha256:98469f5ef781e247c2d83df22630a8fa703c8ea151e4dbf3c35686d9997d4f09 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module allows users to forward messages from the chatter of any -document to other users, adding them as followers of the document -without notifying the current followers.

+document to:

+
    +
  • Other users in the same thread, adding them as followers of the +document without notifying the current followers.
  • +
  • Another thread, but not adding them as followers—only notifying the +current followers of the other thread.
  • +

Table of contents

+
+

Configuration

+

To enable a model to forward messages to another thread:

+
    +
  • With debug mode activated, go to +Settings -> Technical -> Database Structure -> Models.
  • +
  • Search for the model you wish to enable.
  • +
  • Mark the option Enable Forward To and save. Transient models or +those without mail thread won’t have this check visible.
  • +
+
-

Usage

+

Usage

To use this module, follow these steps:

  • Navigate to the chatter of any document.
  • @@ -395,13 +412,15 @@

    Usage

    notes).
  • A Forward icon will appear next to the message.
  • Click the button to display a wizard with the message.
  • -
  • Select the users to forward the message to.
  • -
  • Click the ‘Send Mail’ button to send the message to the selected -users.
  • +
  • Select the forward type (current thread or another thread).
  • +
  • Select the users to forward the message to, or select the other thread +according to the previous step.
  • +
  • Click the ‘Send Mail’ button to send the message to the selected users +or thread.
-

Bug Tracker

+

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 to smash it by providing a detailed and welcomed @@ -409,15 +428,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Tecnativa
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -434,6 +453,8 @@

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.

+

Current maintainer:

+

carlos-lopez-tecnativa

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_forward/tests/test_mail_forward.py b/mail_forward/tests/test_mail_forward.py index 88f311bf4..412c6c36d 100644 --- a/mail_forward/tests/test_mail_forward.py +++ b/mail_forward/tests/test_mail_forward.py @@ -22,6 +22,7 @@ def setUpClass(cls): cls.partner_forward = cls.env["res.partner"].create( {"name": "Forward", "email": "forward@example.com"} ) + cls.env["ir.model"]._get("res.partner").enable_forward_to = True def test_01_mail_forward(self): """ @@ -39,7 +40,7 @@ def test_01_mail_forward(self): composer = composer_form.save() with self.mock_mail_gateway(): composer._action_send_mail() - # Verify recipients of mail.message + # Verify the followers of mail.message message = self.test_record.message_ids[0] self.assertEqual(len(message.partner_ids), 2) self.assertIn(self.partner_follower1, message.partner_ids) @@ -62,13 +63,68 @@ def test_01_mail_forward(self): with RecordCapturer(self.env["mail.message"], message_domain) as capture: with self.mock_mail_gateway(): composer._action_send_mail() - # Verify recipients of mail.message + # Verify the followers of mail.message forward_message = capture.records self.assertEqual(len(forward_message.partner_ids), 1) self.assertNotIn(self.partner_follower1, forward_message.partner_ids) self.assertIn(self.partner_forward, forward_message.partner_ids) self.assertIn("---------- Forwarded message ---------", forward_message.body) + def test_mail_forward_another_thread(self): + """ + Check that the email is forwarded to another thread. + and the email is sent to the followers of the another thread. + """ + ctx = { + "default_model": self.test_record._name, + "default_res_ids": [self.test_record.id], + } + composer_form = Form(self.env["mail.compose.message"].with_context(**ctx)) + composer_form.body = "

Hello

" + composer_form.subject = "Test Forward" + composer_form.partner_ids.add(self.partner_follower1) + composer = composer_form.save() + with self.mock_mail_gateway(): + composer._action_send_mail() + # Verify the followers of mail.message + message = self.test_record.message_ids[0] + self.assertEqual(len(message.partner_ids), 1) + self.assertIn(self.partner_follower1, message.partner_ids) + self.assertNotIn(self.partner_follower2, message.partner_ids) + self.assertNotIn(self.partner_forward, message.partner_ids) + self.assertNotIn("---------- Forwarded message ---------", message.body) + # Forward the email to another record(self.partner_forward) + action_forward = message.action_wizard_forward() + Message = self.env["mail.compose.message"].with_context( + **action_forward["context"] + ) + composer_form = Form(Message, view=action_forward["views"][0][0]) + composer_form.partner_ids.add(self.partner_follower2) + composer_form.forward_type = "another_thread" + composer_form.forward_thread = ( + f"{self.partner_forward._name},{self.partner_forward.id}" + ) + composer = composer_form.save() + message_domain = [ + ("model", "=", self.partner_forward._name), + ("res_id", "=", self.partner_forward.id), + ] + with RecordCapturer(self.env["mail.message"], message_domain) as capture: + with self.mock_mail_gateway(): + composer._action_send_mail() + # Verify the followers of mail.message + forward_message = capture.records + self.assertEqual(forward_message.subject, "Fwd: Test Forward") + self.assertEqual(len(forward_message.partner_ids), 1) + self.assertNotIn(self.partner_follower1, forward_message.partner_ids) + # the partner partner_follower2 is added to the message + # but is not added as a follower automatically. + self.assertIn(self.partner_follower2, forward_message.partner_ids) + self.assertNotIn( + self.partner_follower2, self.partner_forward.message_partner_ids + ) + self.assertIn("---------- Forwarded message ---------", forward_message.body) + def test_02_mail_forward_tour(self): self.test_record.message_post( body="Hello World", message_type="comment", subtype_xmlid="mail.mt_comment" diff --git a/mail_forward/views/ir_model_views.xml b/mail_forward/views/ir_model_views.xml new file mode 100644 index 000000000..d45e61f33 --- /dev/null +++ b/mail_forward/views/ir_model_views.xml @@ -0,0 +1,19 @@ + + + + + view.ir.model.form + ir.model + + + + + + + + + diff --git a/mail_forward/wizards/mail_compose_message.py b/mail_forward/wizards/mail_compose_message.py index cb36069e2..8b50e86c7 100644 --- a/mail_forward/wizards/mail_compose_message.py +++ b/mail_forward/wizards/mail_compose_message.py @@ -1,11 +1,168 @@ # Copyright 2024 Tecnativa - Carlos Lopez # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo import Command, _, api, models +from odoo import _, api, fields, models class MailComposeMessage(models.TransientModel): _inherit = "mail.compose.message" + forward_type = fields.Selection( + [ + ("current_thread", "Current thread"), + ("another_thread", "Another thread"), + ], + default="current_thread", + ) + forward_thread = fields.Reference( + selection="_selection_forward_thread", string="Thread to forward" + ) + + @api.model + def _selection_forward_thread(self): + # Get all models available to be selected by the user. + # Only consider models that support posted messages and are not transient. + models = ( + self.env["ir.model"] + .sudo() + .search( + [ + ("transient", "=", False), + ("is_mail_thread", "=", True), + ("enable_forward_to", "=", True), + ], + order="name asc", + ) + ) + selection_values = [] + for model in models: + if ( + model.model in self.env and self.env[model.model]._auto + ): # No Abstract models or reports + selection_values.append((model.model, model.name)) + return selection_values + + @api.depends( + "composition_mode", + "model", + "res_domain", + "res_ids", + "template_id", + "forward_type", + ) + @api.depends_context("message_forwarded_id") + def _compute_attachment_ids(self): + # Save the attachments before calling super() to avoid losing them + # because when template_id is not set, + # attachment_ids is set to False in the super() call. + old_attachments = {composer.id: composer.attachment_ids for composer in self} + res = super()._compute_attachment_ids() + if self.env.context.get("message_forwarded_id"): + # Add the attachments from the original message. + message_forwarded = self.env["mail.message"].browse( + self.env.context["message_forwarded_id"] + ) + for composer in self: + composer.attachment_ids |= old_attachments[composer.id] + for attachment in message_forwarded.attachment_ids: + composer.attachment_ids |= attachment + return res + + @api.depends( + "composition_mode", + "model", + "res_domain", + "res_ids", + "template_id", + "forward_type", + "forward_thread", + ) + @api.depends_context("message_forwarded_id") + def _compute_body(self): + res = super()._compute_body() + if self.env.context.get("message_forwarded_id"): + # Set the body by default, taking it from the original message. + message_forwarded = self.env["mail.message"].browse( + self.env.context["message_forwarded_id"] + ) + for composer in self.filtered(lambda c: not c.body): + composer.body = message_forwarded._build_message_body_for_forward() + return res + + @api.depends( + "composition_mode", + "model", + "parent_id", + "record_name", + "res_domain", + "res_ids", + "template_id", + "forward_type", + "forward_thread", + ) + @api.depends_context("message_forwarded_id") + def _compute_subject(self): + res = super()._compute_subject() + if self.env.context.get("message_forwarded_id"): + # Set the subject by default, + # because when change the model and res_ids, + # the subject is taken from the new record. + message_forwarded = self.env["mail.message"].browse( + self.env.context["message_forwarded_id"] + ) + for composer in self: + composer.subject = f"{_('Fwd:')} {message_forwarded.subject}" + return res + + @api.depends("composition_mode", "parent_id", "forward_type", "forward_thread") + @api.depends_context("message_forwarded_id") + def _compute_model(self): + res = super()._compute_model() + if self.env.context.get("message_forwarded_id"): + # Set the model to the record to be forwarded + # if the composer is set to forward a record + # it sends the message to the record to be forwarded + for composer in self.filtered( + lambda c: c.forward_type == "another_thread" and c.forward_thread + ): + composer.model = composer.forward_thread._name + return res + + @api.depends("composition_mode", "parent_id", "forward_type", "forward_thread") + @api.depends_context("message_forwarded_id") + def _compute_res_ids(self): + res = super()._compute_res_ids() + if self.env.context.get("message_forwarded_id"): + # Set res_ids to the record to be forwarded + # if the composer is set to forward a record + # it sends the message to the record to be forwarded + for composer in self.filtered( + lambda c: c.forward_type == "another_thread" and c.forward_thread + ): + composer.res_ids = composer.forward_thread.ids + return res + + @api.depends( + "composition_mode", + "model", + "parent_id", + "res_domain", + "res_ids", + "template_id", + "forward_type", + ) + @api.depends_context("message_forwarded_id") + def _compute_partner_ids(self): + # Save the partner_ids before calling super() to avoid losing them + # because when template_id is not set, + # partner_ids is set to False in the super() call. + old_partners = {composer.id: composer.partner_ids for composer in self} + res = super()._compute_partner_ids() + if self.env.context.get("message_forwarded_id"): + # Add the attachments from the original message. + for composer in self: + composer.partner_ids |= old_partners[composer.id] + return res + @api.model def get_record_data(self, values): result = super().get_record_data(values) @@ -20,20 +177,6 @@ def get_record_data(self, values): return result def _action_send_mail(self, auto_commit=False): - # duplicate attachments from original message - message_forwarded_id = self.env.context.get("message_forwarded_id") - if message_forwarded_id: - message_forwarded = self.env["mail.message"].browse(message_forwarded_id) - for wizard in self: - new_attachment_ids = [] - for attachment in wizard.attachment_ids: - if attachment in message_forwarded.attachment_ids: - new_attachment = attachment.copy( - {"res_model": "mail.compose.message", "res_id": wizard.id} - ) - new_attachment_ids.append(new_attachment.id) - else: - new_attachment_ids.append(attachment.id) - new_attachment_ids.reverse() - wizard.write({"attachment_ids": [Command.set(new_attachment_ids)]}) - return super()._action_send_mail(auto_commit=auto_commit) + return super( + MailComposeMessage, self.with_context(forward_type=self.forward_type) + )._action_send_mail(auto_commit=auto_commit) diff --git a/mail_forward/wizards/mail_compose_message_view.xml b/mail_forward/wizards/mail_compose_message_view.xml index 1327be8d2..d6e758777 100644 --- a/mail_forward/wizards/mail_compose_message_view.xml +++ b/mail_forward/wizards/mail_compose_message_view.xml @@ -7,8 +7,25 @@ + + + + - 1 + forward_type == 'current_thread' + + + Followers to notify 1 From f5fbd6b6be4546b34399ef15b84b1c6904dce2c2 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 28 Jan 2025 18:44:26 +0000 Subject: [PATCH 10/44] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: social-17.0/social-17.0-mail_forward Translate-URL: https://translation.odoo-community.org/projects/social-17-0/social-17-0-mail_forward/ --- mail_forward/i18n/it.po | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/mail_forward/i18n/it.po b/mail_forward/i18n/it.po index 44e21bdb7..eaa38e7ce 100644 --- a/mail_forward/i18n/it.po +++ b/mail_forward/i18n/it.po @@ -23,6 +23,16 @@ msgstr "" msgid "---------- Forwarded message ---------" msgstr "---------- Messaggio inoltrato ---------" +#. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__another_thread +msgid "Another thread" +msgstr "" + +#. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__current_thread +msgid "Current thread" +msgstr "" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 @@ -40,6 +50,21 @@ msgstr "Discussione e-mail" msgid "Email composition wizard" msgstr "Procedura guidata creazione e-mail" +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_ir_model__enable_forward_to +msgid "Enable Forward To" +msgstr "" + +#. module: mail_forward +#: model:ir.model.fields,help:mail_forward.field_ir_model__enable_forward_to +msgid "Enable forwarding messages to records of this model." +msgstr "" + +#. module: mail_forward +#: model_terms:ir.ui.view,arch_db:mail_forward.mail_compose_message_forward_form +msgid "Followers to notify" +msgstr "" + #. module: mail_forward #. odoo-javascript #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 @@ -53,7 +78,6 @@ msgstr "Inoltra" #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 -#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 #, python-format msgid "Forward Message" msgstr "Inoltra messaggio" @@ -79,6 +103,11 @@ msgstr "Inoltra messaggio precedente" msgid "Forward Message Right" msgstr "Inoltra messaggio successivo" +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_type +msgid "Forward Type" +msgstr "" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 @@ -98,6 +127,11 @@ msgstr "In.:" msgid "Message" msgstr "Messaggio" +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_ir_model +msgid "Models" +msgstr "" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/wizards/mail_compose_message.py:0 @@ -112,6 +146,11 @@ msgstr "Re:" msgid "Subject" msgstr "Oggetto" +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_thread +msgid "Thread to forward" +msgstr "" + #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 From fd8907a66e8f9470b619ce1faf3e93c3a87a858c Mon Sep 17 00:00:00 2001 From: mymage Date: Thu, 30 Jan 2025 10:42:26 +0000 Subject: [PATCH 11/44] Translated using Weblate (Italian) Currently translated at 100.0% (23 of 23 strings) Translation: social-17.0/social-17.0-mail_forward Translate-URL: https://translation.odoo-community.org/projects/social-17-0/social-17-0-mail_forward/it/ --- mail_forward/i18n/it.po | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mail_forward/i18n/it.po b/mail_forward/i18n/it.po index eaa38e7ce..2327f0ce5 100644 --- a/mail_forward/i18n/it.po +++ b/mail_forward/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2025-01-25 15:06+0000\n" +"PO-Revision-Date: 2025-01-30 13:06+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -26,12 +26,12 @@ msgstr "---------- Messaggio inoltrato ---------" #. module: mail_forward #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__another_thread msgid "Another thread" -msgstr "" +msgstr "Un'altra discussione" #. module: mail_forward #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__current_thread msgid "Current thread" -msgstr "" +msgstr "Discussione attuale" #. module: mail_forward #. odoo-python @@ -53,17 +53,17 @@ msgstr "Procedura guidata creazione e-mail" #. module: mail_forward #: model:ir.model.fields,field_description:mail_forward.field_ir_model__enable_forward_to msgid "Enable Forward To" -msgstr "" +msgstr "Abilita inoltro a" #. module: mail_forward #: model:ir.model.fields,help:mail_forward.field_ir_model__enable_forward_to msgid "Enable forwarding messages to records of this model." -msgstr "" +msgstr "Abilita messaggi inoltro ai record di questo modello." #. module: mail_forward #: model_terms:ir.ui.view,arch_db:mail_forward.mail_compose_message_forward_form msgid "Followers to notify" -msgstr "" +msgstr "Sottoscritti da avvisare" #. module: mail_forward #. odoo-javascript @@ -106,7 +106,7 @@ msgstr "Inoltra messaggio successivo" #. module: mail_forward #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_type msgid "Forward Type" -msgstr "" +msgstr "Tipo inoltro" #. module: mail_forward #. odoo-python @@ -130,7 +130,7 @@ msgstr "Messaggio" #. module: mail_forward #: model:ir.model,name:mail_forward.model_ir_model msgid "Models" -msgstr "" +msgstr "Modelli" #. module: mail_forward #. odoo-python @@ -149,7 +149,7 @@ msgstr "Oggetto" #. module: mail_forward #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_thread msgid "Thread to forward" -msgstr "" +msgstr "Discussione da inoltrare" #. module: mail_forward #. odoo-python From 8013f89f4ca29ad45adf136154ba792c77e298e5 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Wed, 12 Feb 2025 06:13:59 -0500 Subject: [PATCH 12/44] [FIX] mail_forward: Avoid error when forwarding a message while reading the view ir.ui.view requires base.group_system permission to read, so sudo is used instead. --- mail_forward/README.rst | 2 +- mail_forward/__manifest__.py | 2 +- mail_forward/models/mail_message.py | 2 +- mail_forward/static/description/index.html | 2 +- mail_forward/tests/test_mail_forward.py | 18 +++++++++++++++--- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/mail_forward/README.rst b/mail_forward/README.rst index 330585481..fbbe0acdb 100644 --- a/mail_forward/README.rst +++ b/mail_forward/README.rst @@ -7,7 +7,7 @@ Mail Forward Message !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:98469f5ef781e247c2d83df22630a8fa703c8ea151e4dbf3c35686d9997d4f09 + !! source digest: sha256:5ef4a37a086e596348f4dcec546d3ceadf405792c3f2c6481397d2ff574839d9 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/mail_forward/__manifest__.py b/mail_forward/__manifest__.py index c396649fe..db8dc53fe 100644 --- a/mail_forward/__manifest__.py +++ b/mail_forward/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "Mail Forward Message", - "version": "17.0.2.0.0", + "version": "17.0.2.0.1", "summary": "Forward messages from the chatter of any document to other users.", "author": "Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", diff --git a/mail_forward/models/mail_message.py b/mail_forward/models/mail_message.py index a6c18e3db..9546cde3e 100644 --- a/mail_forward/models/mail_message.py +++ b/mail_forward/models/mail_message.py @@ -8,7 +8,7 @@ class MailMessage(models.Model): _inherit = "mail.message" def action_wizard_forward(self): - view = self.env.ref("mail_forward.mail_compose_message_forward_form") + view = self.env.ref("mail_forward.mail_compose_message_forward_form").sudo() action = self.env["ir.actions.actions"]._for_xml_id( "mail.action_email_compose_message_wizard" ) diff --git a/mail_forward/static/description/index.html b/mail_forward/static/description/index.html index 69529d530..cb96bf95f 100644 --- a/mail_forward/static/description/index.html +++ b/mail_forward/static/description/index.html @@ -367,7 +367,7 @@

Mail Forward Message

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:98469f5ef781e247c2d83df22630a8fa703c8ea151e4dbf3c35686d9997d4f09 +!! source digest: sha256:5ef4a37a086e596348f4dcec546d3ceadf405792c3f2c6481397d2ff574839d9 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module allows users to forward messages from the chatter of any diff --git a/mail_forward/tests/test_mail_forward.py b/mail_forward/tests/test_mail_forward.py index 412c6c36d..f3df32efd 100644 --- a/mail_forward/tests/test_mail_forward.py +++ b/mail_forward/tests/test_mail_forward.py @@ -2,8 +2,9 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo.tests import Form, RecordCapturer, tagged -from odoo.tests.common import HttpCase +from odoo.tests.common import HttpCase, users +from odoo.addons.mail.tests.common import mail_new_test_user from odoo.addons.mail.tests.test_mail_composer import TestMailComposer @@ -12,6 +13,11 @@ class TestMailForward(TestMailComposer, HttpCase): @classmethod def setUpClass(cls): super().setUpClass() + cls.user_test = mail_new_test_user( + cls.env, + login="user_test_forward", + groups="base.group_user,base.group_partner_manager", + ) cls.test_record.write({"name": "Test Forward", "email": "test@example.com"}) cls.partner_follower1 = cls.env["res.partner"].create( {"name": "Follower1", "email": "follower1@example.com"} @@ -24,6 +30,7 @@ def setUpClass(cls): ) cls.env["ir.model"]._get("res.partner").enable_forward_to = True + @users("user_test_forward") def test_01_mail_forward(self): """ Send an email to followers @@ -70,6 +77,7 @@ def test_01_mail_forward(self): self.assertIn(self.partner_forward, forward_message.partner_ids) self.assertIn("---------- Forwarded message ---------", forward_message.body) + @users("user_test_forward") def test_mail_forward_another_thread(self): """ Check that the email is forwarded to another thread. @@ -125,16 +133,20 @@ def test_mail_forward_another_thread(self): ) self.assertIn("---------- Forwarded message ---------", forward_message.body) + @users("user_test_forward") def test_02_mail_forward_tour(self): self.test_record.message_post( body="Hello World", message_type="comment", subtype_xmlid="mail.mt_comment" ) - self.start_tour("/web", "mail_forward.mail_forward_tour", login="admin") + self.start_tour( + "/web", "mail_forward.mail_forward_tour", login="user_test_forward" + ) + @users("user_test_forward") def test_03_mail_note_not_forward_tour(self): self.test_record.message_post( body="This is a note", message_type="comment", subtype_xmlid="mail.mt_note" ) self.start_tour( - "/web", "mail_forward.mail_note_not_forward_tour", login="admin" + "/web", "mail_forward.mail_note_not_forward_tour", login="user_test_forward" ) From aa621a4b0866a1494803adefa6d4d474916da0f1 Mon Sep 17 00:00:00 2001 From: jabelchi Date: Thu, 19 Jun 2025 07:22:32 +0000 Subject: [PATCH 13/44] Added translation using Weblate (Catalan) --- mail_forward/i18n/ca.po | 160 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 mail_forward/i18n/ca.po diff --git a/mail_forward/i18n/ca.po b/mail_forward/i18n/ca.po new file mode 100644 index 000000000..1654d1e3b --- /dev/null +++ b/mail_forward/i18n/ca.po @@ -0,0 +1,160 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_forward +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-06-19 09:25+0000\n" +"Last-Translator: jabelchi \n" +"Language-Team: none\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.10.4\n" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "---------- Forwarded message ---------" +msgstr "---------- Missatge reenviat ---------" + +#. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__another_thread +msgid "Another thread" +msgstr "Un altre fil" + +#. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__current_thread +msgid "Current thread" +msgstr "Fil actual" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "Date" +msgstr "Data" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_thread +msgid "Email Thread" +msgstr "Fil de correus" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_compose_message +msgid "Email composition wizard" +msgstr "Assistent de redacció de correus" + +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_ir_model__enable_forward_to +msgid "Enable Forward To" +msgstr "Habilita reenviament" + +#. module: mail_forward +#: model:ir.model.fields,help:mail_forward.field_ir_model__enable_forward_to +msgid "Enable forwarding messages to records of this model." +msgstr "Habilita reenviament de missatges a registres d'aquest model." + +#. module: mail_forward +#: model_terms:ir.ui.view,arch_db:mail_forward.mail_compose_message_forward_form +msgid "Followers to notify" +msgstr "Seguidors a notificar" + +#. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#: code:addons/mail_forward/static/src/core/common/message_actions.esm.js:0 +#, python-format +msgid "Forward" +msgstr "Reenvia" + +#. module: mail_forward +#. odoo-javascript +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message" +msgstr "Reenvia missatge" + +#. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Center" +msgstr "" + +#. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Left" +msgstr "" + +#. module: mail_forward +#. odoo-javascript +#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 +#, python-format +msgid "Forward Message Right" +msgstr "" + +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_type +msgid "Forward Type" +msgstr "Tipus de reenviament" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "From" +msgstr "De" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/wizards/mail_compose_message.py:0 +#, python-format +msgid "Fwd:" +msgstr "Rv:" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_mail_message +msgid "Message" +msgstr "Missatge" + +#. module: mail_forward +#: model:ir.model,name:mail_forward.model_ir_model +msgid "Models" +msgstr "Models" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/wizards/mail_compose_message.py:0 +#, python-format +msgid "Re:" +msgstr "Re:" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "Subject" +msgstr "Assumpte" + +#. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_thread +msgid "Thread to forward" +msgstr "Fil pel reenviament" + +#. module: mail_forward +#. odoo-python +#: code:addons/mail_forward/models/mail_message.py:0 +#, python-format +msgid "To" +msgstr "A" From fee86dadd00f41966ab969a3701a72b3a553019b Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 22 Jul 2025 13:34:08 +0000 Subject: [PATCH 14/44] [UPD] Update mail_forward.pot --- mail_forward/i18n/mail_forward.pot | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mail_forward/i18n/mail_forward.pot b/mail_forward/i18n/mail_forward.pot index 825a81c03..f6433128d 100644 --- a/mail_forward/i18n/mail_forward.pot +++ b/mail_forward/i18n/mail_forward.pot @@ -21,11 +21,13 @@ msgid "---------- Forwarded message ---------" msgstr "" #. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_gateway_message__forward_type__another_thread #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__another_thread msgid "Another thread" msgstr "" #. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_gateway_message__forward_type__current_thread #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__current_thread msgid "Current thread" msgstr "" @@ -102,6 +104,7 @@ msgid "Forward Message Right" msgstr "" #. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_gateway_message__forward_type #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_type msgid "Forward Type" msgstr "" @@ -145,6 +148,7 @@ msgid "Subject" msgstr "" #. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_gateway_message__forward_thread #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_thread msgid "Thread to forward" msgstr "" From bf8291af6e4269abfe7c5508b908ee2f3fea01f8 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 22 Jul 2025 13:41:13 +0000 Subject: [PATCH 15/44] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: social-17.0/social-17.0-mail_forward Translate-URL: https://translation.odoo-community.org/projects/social-17-0/social-17-0-mail_forward/ --- mail_forward/i18n/ca.po | 5 ++++- mail_forward/i18n/es.po | 4 ++++ mail_forward/i18n/it.po | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/mail_forward/i18n/ca.po b/mail_forward/i18n/ca.po index 1654d1e3b..67c8aa5e4 100644 --- a/mail_forward/i18n/ca.po +++ b/mail_forward/i18n/ca.po @@ -24,11 +24,13 @@ msgid "---------- Forwarded message ---------" msgstr "---------- Missatge reenviat ---------" #. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_gateway_message__forward_type__another_thread #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__another_thread msgid "Another thread" msgstr "Un altre fil" #. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_gateway_message__forward_type__current_thread #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__current_thread msgid "Current thread" msgstr "Fil actual" @@ -78,7 +80,6 @@ msgstr "Reenvia" #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 -#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 #, python-format msgid "Forward Message" msgstr "Reenvia missatge" @@ -105,6 +106,7 @@ msgid "Forward Message Right" msgstr "" #. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_gateway_message__forward_type #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_type msgid "Forward Type" msgstr "Tipus de reenviament" @@ -148,6 +150,7 @@ msgid "Subject" msgstr "Assumpte" #. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_gateway_message__forward_thread #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_thread msgid "Thread to forward" msgstr "Fil pel reenviament" diff --git a/mail_forward/i18n/es.po b/mail_forward/i18n/es.po index 62f8ebcf7..cd270aaf7 100644 --- a/mail_forward/i18n/es.po +++ b/mail_forward/i18n/es.po @@ -25,11 +25,13 @@ msgid "---------- Forwarded message ---------" msgstr "---------- Mensaje reenviado ---------" #. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_gateway_message__forward_type__another_thread #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__another_thread msgid "Another thread" msgstr "Otro hilo" #. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_gateway_message__forward_type__current_thread #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__current_thread msgid "Current thread" msgstr "Hilo actual" @@ -105,6 +107,7 @@ msgid "Forward Message Right" msgstr "" #. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_gateway_message__forward_type #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_type msgid "Forward Type" msgstr "Tipo de reenvío" @@ -148,6 +151,7 @@ msgid "Subject" msgstr "Asunto" #. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_gateway_message__forward_thread #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_thread msgid "Thread to forward" msgstr "Hilo a reenviar" diff --git a/mail_forward/i18n/it.po b/mail_forward/i18n/it.po index 2327f0ce5..97508a7c7 100644 --- a/mail_forward/i18n/it.po +++ b/mail_forward/i18n/it.po @@ -24,11 +24,13 @@ msgid "---------- Forwarded message ---------" msgstr "---------- Messaggio inoltrato ---------" #. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_gateway_message__forward_type__another_thread #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__another_thread msgid "Another thread" msgstr "Un'altra discussione" #. module: mail_forward +#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_gateway_message__forward_type__current_thread #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__current_thread msgid "Current thread" msgstr "Discussione attuale" @@ -104,6 +106,7 @@ msgid "Forward Message Right" msgstr "Inoltra messaggio successivo" #. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_gateway_message__forward_type #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_type msgid "Forward Type" msgstr "Tipo inoltro" @@ -147,6 +150,7 @@ msgid "Subject" msgstr "Oggetto" #. module: mail_forward +#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_gateway_message__forward_thread #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_thread msgid "Thread to forward" msgstr "Discussione da inoltrare" From ed6ce164e957267418db05d6dba2a767753618ae Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Wed, 4 Feb 2026 09:26:32 -0500 Subject: [PATCH 16/44] [IMP] mail_forward: auto fixes --- mail_forward/README.rst | 16 ++++---- mail_forward/__manifest__.py | 2 +- mail_forward/static/description/index.html | 8 ++-- .../forward_message/forward_message.xml | 38 +++++++++---------- mail_forward/views/ir_model_views.xml | 2 - 5 files changed, 32 insertions(+), 34 deletions(-) diff --git a/mail_forward/README.rst b/mail_forward/README.rst index fbbe0acdb..67a46664e 100644 --- a/mail_forward/README.rst +++ b/mail_forward/README.rst @@ -16,14 +16,14 @@ Mail Forward Message .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 -.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github - :target: https://github.com/OCA/social/tree/17.0/mail_forward - :alt: OCA/social +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github + :target: https://github.com/OCA/mail/tree/18.0/mail_forward + :alt: OCA/mail .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/social-17-0/social-17-0-mail_forward + :target: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_forward :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/mail&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -71,10 +71,10 @@ To use this module, follow these steps: Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. +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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -114,6 +114,6 @@ Current `maintainer `__: |maintainer-carlos-lopez-tecnativa| -This module is part of the `OCA/social `_ project on GitHub. +This module is part of the `OCA/mail `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_forward/__manifest__.py b/mail_forward/__manifest__.py index db8dc53fe..d88e6fa69 100644 --- a/mail_forward/__manifest__.py +++ b/mail_forward/__manifest__.py @@ -5,7 +5,7 @@ "version": "17.0.2.0.1", "summary": "Forward messages from the chatter of any document to other users.", "author": "Tecnativa, Odoo Community Association (OCA)", - "website": "https://github.com/OCA/social", + "website": "https://github.com/OCA/mail", "depends": ["mail", "contacts"], "data": ["wizards/mail_compose_message_view.xml", "views/ir_model_views.xml"], "assets": { diff --git a/mail_forward/static/description/index.html b/mail_forward/static/description/index.html index cb96bf95f..5288509cd 100644 --- a/mail_forward/static/description/index.html +++ b/mail_forward/static/description/index.html @@ -369,7 +369,7 @@

Mail Forward Message

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:5ef4a37a086e596348f4dcec546d3ceadf405792c3f2c6481397d2ff574839d9 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

This module allows users to forward messages from the chatter of any document to:

    @@ -421,10 +421,10 @@

    Usage

Bug Tracker

-

Bugs are tracked on GitHub Issues. +

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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -455,7 +455,7 @@

Maintainers

promote its widespread use.

Current maintainer:

carlos-lopez-tecnativa

-

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

+

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

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

diff --git a/mail_forward/static/src/components/forward_message/forward_message.xml b/mail_forward/static/src/components/forward_message/forward_message.xml index 070664668..cab680d73 100644 --- a/mail_forward/static/src/components/forward_message/forward_message.xml +++ b/mail_forward/static/src/components/forward_message/forward_message.xml @@ -9,25 +9,25 @@ t-on-click="onClickForwardMessage" > - - - - + + + + Forward diff --git a/mail_forward/views/ir_model_views.xml b/mail_forward/views/ir_model_views.xml index d45e61f33..5c93fbc06 100644 --- a/mail_forward/views/ir_model_views.xml +++ b/mail_forward/views/ir_model_views.xml @@ -1,6 +1,5 @@ - view.ir.model.form ir.model @@ -15,5 +14,4 @@
- From 4e2d20ca79f3e09a7a1944c33a271975fcdd1711 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Wed, 4 Feb 2026 13:25:20 -0500 Subject: [PATCH 17/44] [MIG] mail_forward: Migration to version 18.0 --- mail_forward/__manifest__.py | 2 +- mail_forward/models/mail_message.py | 14 ++++++------ .../forward_message/forward_message.esm.js | 11 ++-------- .../src/core/common/message_actions.esm.js | 3 +-- .../static/tests/tours/mail_forward.esm.js | 22 +++++++++++-------- .../wizards/mail_compose_message_view.xml | 11 ++++------ 6 files changed, 28 insertions(+), 35 deletions(-) diff --git a/mail_forward/__manifest__.py b/mail_forward/__manifest__.py index d88e6fa69..c9a24f028 100644 --- a/mail_forward/__manifest__.py +++ b/mail_forward/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "Mail Forward Message", - "version": "17.0.2.0.1", + "version": "18.0.1.0.0", "summary": "Forward messages from the chatter of any document to other users.", "author": "Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/mail", diff --git a/mail_forward/models/mail_message.py b/mail_forward/models/mail_message.py index 9546cde3e..d30a8638e 100644 --- a/mail_forward/models/mail_message.py +++ b/mail_forward/models/mail_message.py @@ -1,6 +1,6 @@ # Copyright 2024 Tecnativa - Carlos Lopez # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -from odoo import _, models +from odoo import models from odoo.tools import format_datetime @@ -12,7 +12,7 @@ def action_wizard_forward(self): action = self.env["ir.actions.actions"]._for_xml_id( "mail.action_email_compose_message_wizard" ) - action["name"] = _("Forward Message") + action["name"] = self.env._("Forward Message") action["view_mode"] = view.type action["views"] = [(view.id, view.type)] action["context"] = { @@ -42,14 +42,14 @@ def _build_message_body_for_forward(self):

{body} """.format( - str_forwarded_message=_("---------- Forwarded message ---------"), + str_forwarded_message=self.env._("---------- Forwarded message ---------"), email_from=self.email_from, date=format_datetime(self.env, self.date), subject=self.subject, to=", ".join(partner_emails), - str_date=_("Date"), - str_subject=_("Subject"), - str_from=_("From"), - str_to=_("To"), + str_date=self.env._("Date"), + str_subject=self.env._("Subject"), + str_from=self.env._("From"), + str_to=self.env._("To"), body=self.body, ) diff --git a/mail_forward/static/src/components/forward_message/forward_message.esm.js b/mail_forward/static/src/components/forward_message/forward_message.esm.js index 0fc7c0ca2..49d27a536 100644 --- a/mail_forward/static/src/components/forward_message/forward_message.esm.js +++ b/mail_forward/static/src/components/forward_message/forward_message.esm.js @@ -1,17 +1,10 @@ -/** @odoo-module **/ /* Copyright 2024 Tecnativa - Carlos Lopez License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). */ const {Component} = owl; -import {useService} from "@web/core/utils/hooks"; export class ForwardMessage extends Component { - setup() { - super.setup(); - this.threadService = useService("mail.thread"); - } async onClickForwardMessage() { - const composer = this.props.message.originThread.composer; const action = await this.env.services.orm.call( "mail.message", "action_wizard_forward", @@ -24,8 +17,8 @@ export class ForwardMessage extends Component { active_model: "mail.message", }, onClose: () => { - if (composer.thread) { - this.threadService.fetchNewMessages(composer.thread); + if (this.props.message.thread) { + this.props.message.thread.fetchNewMessages(); } }, }); diff --git a/mail_forward/static/src/core/common/message_actions.esm.js b/mail_forward/static/src/core/common/message_actions.esm.js index dcc9ace71..1d9b78eea 100644 --- a/mail_forward/static/src/core/common/message_actions.esm.js +++ b/mail_forward/static/src/core/common/message_actions.esm.js @@ -1,10 +1,9 @@ -/* @odoo-module */ /* Copyright 2024 Tecnativa - Carlos Lopez License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). */ -import {_t} from "@web/core/l10n/translation"; import {ForwardMessage} from "../../components/forward_message/forward_message.esm"; +import {_t} from "@web/core/l10n/translation"; import {messageActionsRegistry} from "@mail/core/common/message_actions"; messageActionsRegistry.add("forward", { diff --git a/mail_forward/static/tests/tours/mail_forward.esm.js b/mail_forward/static/tests/tours/mail_forward.esm.js index 3f4b720fc..b344c0bf0 100644 --- a/mail_forward/static/tests/tours/mail_forward.esm.js +++ b/mail_forward/static/tests/tours/mail_forward.esm.js @@ -1,18 +1,18 @@ -/** @odoo-module */ - import {registry} from "@web/core/registry"; const contact_steps = [ { trigger: ".o_navbar_apps_menu button", + run: "click", }, { trigger: '.o_app[data-menu-xmlid="contacts.menu_contacts"]', + run: "click", }, { content: "Search Contact", trigger: ".o_searchview_input", - run: "text Test Forward", + run: "edit Test Forward", }, { trigger: ".o_menu_item", @@ -27,6 +27,7 @@ const contact_steps = [ { content: "Open contact", trigger: ".o_list_table td[name='complete_name']:contains('Test Forward')", + run: "click", }, ]; registry.category("web_tour.tours").add("mail_forward.mail_forward_tour", { @@ -35,8 +36,13 @@ registry.category("web_tour.tours").add("mail_forward.mail_forward_tour", { steps: () => [ ...contact_steps, { - content: "Hover a message", - trigger: "div.o-mail-Message[aria-label='Message'] button.dropdown-toggle", + content: "Hover a message to show actions", + trigger: "div.o-mail-Message[aria-label='Message']", + run: "hover", + }, + { + content: "Click message options button", + trigger: "div.o-mail-Message-actions button.dropdown-toggle", run: "click", }, { @@ -47,18 +53,16 @@ registry.category("web_tour.tours").add("mail_forward.mail_forward_tour", { { content: "Select a Forward", trigger: ".o_field_widget[name=partner_ids] input", - extra_trigger: ".modal-dialog", - run: "text Forward", + run: "edit Forward", }, { content: "Valid Forward", trigger: ".ui-menu-item a:contains(Forward)", run: "click", - in_modal: false, }, { content: "Send mail", - trigger: "button[name=action_send_mail]", + trigger: "button.o_mail_send", run: "click", }, { diff --git a/mail_forward/wizards/mail_compose_message_view.xml b/mail_forward/wizards/mail_compose_message_view.xml index d6e758777..e1118b45d 100644 --- a/mail_forward/wizards/mail_compose_message_view.xml +++ b/mail_forward/wizards/mail_compose_message_view.xml @@ -27,18 +27,15 @@ Followers to notify - - 1 - - - 1 - 1 + + 1 + From 516c7ad1102949b859a3bf856cdcd033803170d8 Mon Sep 17 00:00:00 2001 From: Christopher Rogos Date: Thu, 5 Feb 2026 16:35:15 +0000 Subject: [PATCH 18/44] [IMP] mail_restrict_follower_selection: enhance domain filtering for follower selection --- mail_restrict_follower_selection/README.rst | 12 +++++++++--- .../data/ir_config_parameter.xml | 2 +- .../models/mail_thread.py | 8 +++++++- .../readme/CONFIGURE.md | 9 ++++++--- .../static/description/index.html | 13 ++++++++++--- 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst index d5c9fb0d7..de7c3686b 100644 --- a/mail_restrict_follower_selection/README.rst +++ b/mail_restrict_follower_selection/README.rst @@ -52,9 +52,15 @@ certain record type (or have different restrictions for different record types), create a parameter mail_restrict_follower_selection.domain.$your_model. -As an example, you could use [('category_id.name', '=', 'Employees')] to -allow only contacts with 'Employees' tag to be added as follower - this -also is the default. +Some examples: + +- ``[("category_id.name", "=", "Employees")]`` : Only allow contacts + with 'Employees' tag +- ``[("is_company", "=", False)]`` : Restrict company contacts to be + added as follower (to avoid emails to info@ email address) +- ``[("user_ids","!=",False)]`` : Restrict to contacts with user + (internal and portal) +- ``[("employee_ids","!=",False)]`` : Restrict to employees Note: This module won't change existing followers! diff --git a/mail_restrict_follower_selection/data/ir_config_parameter.xml b/mail_restrict_follower_selection/data/ir_config_parameter.xml index b44c26557..3b67980c2 100644 --- a/mail_restrict_follower_selection/data/ir_config_parameter.xml +++ b/mail_restrict_follower_selection/data/ir_config_parameter.xml @@ -2,6 +2,6 @@ mail_restrict_follower_selection.domain - [('category_id.name', '=', 'Employees')] + [] diff --git a/mail_restrict_follower_selection/models/mail_thread.py b/mail_restrict_follower_selection/models/mail_thread.py index 56af24527..c12f19b1b 100644 --- a/mail_restrict_follower_selection/models/mail_thread.py +++ b/mail_restrict_follower_selection/models/mail_thread.py @@ -1,4 +1,4 @@ -from odoo import models +from odoo import fields, models from odoo.tools import config from odoo.tools.safe_eval import safe_eval @@ -8,6 +8,12 @@ class MailThread(models.AbstractModel): _inherit = "mail.thread" + message_partner_ids = fields.Many2many( + domain=lambda thread: thread.env[ + "mail.wizard.invite" + ]._mail_restrict_follower_selection_get_domain(thread._name) + ) + def _message_add_suggested_recipient( self, result, partner=None, email=None, lang=None, reason="" ): diff --git a/mail_restrict_follower_selection/readme/CONFIGURE.md b/mail_restrict_follower_selection/readme/CONFIGURE.md index 9213b8be1..76836f613 100644 --- a/mail_restrict_follower_selection/readme/CONFIGURE.md +++ b/mail_restrict_follower_selection/readme/CONFIGURE.md @@ -5,8 +5,11 @@ certain record type (or have different restrictions for different record types), create a parameter mail_restrict_follower_selection.domain.\$your_model. -As an example, you could use \[('category_id.name', '=', 'Employees')\] -to allow only contacts with 'Employees' tag to be added as follower - -this also is the default. +Some examples: + +- `[("category_id.name", "=", "Employees")]` : Only allow contacts with 'Employees' tag +- `[("is_company", "=", False)]` : Restrict company contacts to be added as follower (to avoid emails to info@ email address) +- `[("user_ids","!=",False)]` : Restrict to contacts with user (internal and portal) +- `[("employee_ids","!=",False)]` : Restrict to employees Note: This module won't change existing followers! diff --git a/mail_restrict_follower_selection/static/description/index.html b/mail_restrict_follower_selection/static/description/index.html index 8d23fde53..caee439df 100644 --- a/mail_restrict_follower_selection/static/description/index.html +++ b/mail_restrict_follower_selection/static/description/index.html @@ -398,9 +398,16 @@

Configuration

certain record type (or have different restrictions for different record types), create a parameter mail_restrict_follower_selection.domain.$your_model.

-

As an example, you could use [(‘category_id.name’, ‘=’, ‘Employees’)] to -allow only contacts with ‘Employees’ tag to be added as follower - this -also is the default.

+

Some examples:

+
    +
  • [("category_id.name", "=", "Employees")] : Only allow contacts +with ‘Employees’ tag
  • +
  • [("is_company", "=", False)] : Restrict company contacts to be +added as follower (to avoid emails to info@ email address)
  • +
  • [("user_ids","!=",False)] : Restrict to contacts with user +(internal and portal)
  • +
  • [("employee_ids","!=",False)] : Restrict to employees
  • +

Note: This module won’t change existing followers!

From b91377b8491b898fe90a7e2d2fab389e56d5ddb2 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 12 Feb 2026 09:06:36 +0000 Subject: [PATCH 19/44] [UPD] Update mail_restrict_follower_selection.pot --- .../i18n/mail_restrict_follower_selection.pot | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot b/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot index 38aaa874c..da8b60b9b 100644 --- a/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot +++ b/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot @@ -28,6 +28,38 @@ msgstr "" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_analytic_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_bank_statement_line__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_journal__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_move__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_payment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_reconcile_model__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_setup_bank_manual_config__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_tax__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_calendar_event__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_discuss_channel__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_cc__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_main_attachment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_phone__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_contact__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_mailing__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_phone_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_category__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_pricelist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_product__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_template__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_company__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner_bank__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_users__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" From ecc6e91e0ce9ac128d7c1eb64374cbfb4f69afb0 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 12 Feb 2026 09:10:42 +0000 Subject: [PATCH 20/44] [BOT] post-merge updates --- README.md | 2 +- mail_restrict_follower_selection/README.rst | 32 +++++++++++-------- .../__manifest__.py | 2 +- .../static/description/index.html | 28 +++++++++------- 4 files changed, 37 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 52228a49b..f4f4bdd56 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ addon | version | maintainers | summary [mail_partner_opt_out](mail_partner_opt_out/) | 18.0.1.0.0 | | Add the partner's email to the blackmailed list [mail_post_defer](mail_post_defer/) | 18.0.1.0.0 | Yajo | Faster and cancellable outgoing messages [mail_quoted_reply](mail_quoted_reply/) | 18.0.1.0.0 | | Make a reply using a message -[mail_restrict_follower_selection](mail_restrict_follower_selection/) | 18.0.1.0.0 | | Define a domain from which followers can be selected +[mail_restrict_follower_selection](mail_restrict_follower_selection/) | 18.0.1.1.0 | | Define a domain from which followers can be selected [mail_send_confirmation](mail_send_confirmation/) | 18.0.1.0.0 | | Mail Send Confirmation [mail_show_follower](mail_show_follower/) | 18.0.1.0.2 | yajo | Show CC document followers in mails. [mail_suggested_recipient_unchecked](mail_suggested_recipient_unchecked/) | 18.0.1.0.0 | victoralmau | Mail suggested recipient unchecked diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst index de7c3686b..37ffb0653 100644 --- a/mail_restrict_follower_selection/README.rst +++ b/mail_restrict_follower_selection/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + =========================== Restrict follower selection =========================== @@ -7,13 +11,13 @@ Restrict follower selection !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:449f3de313fb200f336c9351687009ffc0cd603dc47d5d0d4e2d315eb280ebf4 + !! source digest: sha256:976e9e65a681e7157cb433ca47a19013011496fa891bf180c564616589f0d470 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github @@ -54,13 +58,13 @@ mail_restrict_follower_selection.domain.$your_model. Some examples: -- ``[("category_id.name", "=", "Employees")]`` : Only allow contacts - with 'Employees' tag -- ``[("is_company", "=", False)]`` : Restrict company contacts to be - added as follower (to avoid emails to info@ email address) -- ``[("user_ids","!=",False)]`` : Restrict to contacts with user - (internal and portal) -- ``[("employee_ids","!=",False)]`` : Restrict to employees +- ``[("category_id.name", "=", "Employees")]`` : Only allow contacts + with 'Employees' tag +- ``[("is_company", "=", False)]`` : Restrict company contacts to be + added as follower (to avoid emails to info@ email address) +- ``[("user_ids","!=",False)]`` : Restrict to contacts with user + (internal and portal) +- ``[("employee_ids","!=",False)]`` : Restrict to employees Note: This module won't change existing followers! @@ -86,12 +90,12 @@ Authors Contributors ------------ -- Holger Brunn -- Nguyen Tan Phuc -- Enric Tobella -- `Quartile `__: +- Holger Brunn +- Nguyen Tan Phuc +- Enric Tobella +- `Quartile `__: - - Aung Ko Ko Lin + - Aung Ko Ko Lin Maintainers ----------- diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index 632722209..c31f31f6c 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Restrict follower selection", - "version": "18.0.1.0.0", + "version": "18.0.1.1.0", "author": "Therp BV,Creu Blanca,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", diff --git a/mail_restrict_follower_selection/static/description/index.html b/mail_restrict_follower_selection/static/description/index.html index caee439df..e4d340ef2 100644 --- a/mail_restrict_follower_selection/static/description/index.html +++ b/mail_restrict_follower_selection/static/description/index.html @@ -3,7 +3,7 @@ -Restrict follower selection +README.rst -
-

Restrict follower selection

+
+ + +Odoo Community Association + +
+

Restrict follower selection

-

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

This module was written to allow you to restrict the selection of possible followers. For example, if you use the social ERP functions only internally, it makes sense to filter possible followers for being @@ -391,7 +396,7 @@

Restrict follower selection

-

Configuration

+

Configuration

To configure this module, you need to go to System parameters and adjust mail_restrict_follower_selection.domain as you see fit. This restricts followers globally, if you want to restrict only the followers for a @@ -411,7 +416,7 @@

Configuration

Note: This module won’t change existing followers!

-

Bug Tracker

+

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 to smash it by providing a detailed and welcomed @@ -419,16 +424,16 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Therp BV
  • Creu Blanca
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -453,5 +458,6 @@

Maintainers

+
From 593847013b0b932bbace7a13ac1c8ddb57bd935b Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 12 Feb 2026 09:10:50 +0000 Subject: [PATCH 21/44] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: mail-18.0/mail-18.0-mail_restrict_follower_selection Translate-URL: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_restrict_follower_selection/ --- mail_restrict_follower_selection/i18n/de.po | 32 +++++++++++++++++++++ mail_restrict_follower_selection/i18n/fr.po | 32 +++++++++++++++++++++ mail_restrict_follower_selection/i18n/hr.po | 32 +++++++++++++++++++++ mail_restrict_follower_selection/i18n/it.po | 32 +++++++++++++++++++++ mail_restrict_follower_selection/i18n/sl.po | 32 +++++++++++++++++++++ 5 files changed, 160 insertions(+) diff --git a/mail_restrict_follower_selection/i18n/de.po b/mail_restrict_follower_selection/i18n/de.po index eff22263f..caba15261 100644 --- a/mail_restrict_follower_selection/i18n/de.po +++ b/mail_restrict_follower_selection/i18n/de.po @@ -31,6 +31,38 @@ msgstr "Abonnenten des Dokuments" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_analytic_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_bank_statement_line__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_journal__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_move__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_payment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_reconcile_model__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_setup_bank_manual_config__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_tax__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_calendar_event__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_discuss_channel__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_cc__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_main_attachment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_phone__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_contact__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_mailing__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_phone_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_category__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_pricelist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_product__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_template__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_company__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner_bank__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_users__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" diff --git a/mail_restrict_follower_selection/i18n/fr.po b/mail_restrict_follower_selection/i18n/fr.po index 7f96c92b0..a357edb97 100644 --- a/mail_restrict_follower_selection/i18n/fr.po +++ b/mail_restrict_follower_selection/i18n/fr.po @@ -34,6 +34,38 @@ msgstr "Suiveurs du document" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_analytic_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_bank_statement_line__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_journal__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_move__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_payment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_reconcile_model__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_setup_bank_manual_config__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_tax__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_calendar_event__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_discuss_channel__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_cc__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_main_attachment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_phone__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_contact__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_mailing__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_phone_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_category__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_pricelist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_product__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_template__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_company__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner_bank__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_users__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" diff --git a/mail_restrict_follower_selection/i18n/hr.po b/mail_restrict_follower_selection/i18n/hr.po index da0fd1828..fc8585f6b 100644 --- a/mail_restrict_follower_selection/i18n/hr.po +++ b/mail_restrict_follower_selection/i18n/hr.po @@ -34,6 +34,38 @@ msgstr "" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_analytic_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_bank_statement_line__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_journal__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_move__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_payment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_reconcile_model__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_setup_bank_manual_config__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_tax__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_calendar_event__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_discuss_channel__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_cc__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_main_attachment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_phone__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_contact__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_mailing__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_phone_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_category__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_pricelist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_product__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_template__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_company__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner_bank__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_users__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" diff --git a/mail_restrict_follower_selection/i18n/it.po b/mail_restrict_follower_selection/i18n/it.po index cf14c50f5..2371e0ca9 100644 --- a/mail_restrict_follower_selection/i18n/it.po +++ b/mail_restrict_follower_selection/i18n/it.po @@ -34,6 +34,38 @@ msgstr "Follower Documento" msgid "Email Thread" msgstr "Discussione e-mail" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_analytic_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_bank_statement_line__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_journal__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_move__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_payment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_reconcile_model__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_setup_bank_manual_config__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_tax__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_calendar_event__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_discuss_channel__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_cc__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_main_attachment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_phone__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_contact__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_mailing__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_phone_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_category__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_pricelist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_product__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_template__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_company__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner_bank__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_users__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" diff --git a/mail_restrict_follower_selection/i18n/sl.po b/mail_restrict_follower_selection/i18n/sl.po index 81102969c..78157127a 100644 --- a/mail_restrict_follower_selection/i18n/sl.po +++ b/mail_restrict_follower_selection/i18n/sl.po @@ -35,6 +35,38 @@ msgstr "" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_analytic_account__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_bank_statement_line__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_journal__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_move__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_payment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_reconcile_model__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_setup_bank_manual_config__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_tax__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_calendar_event__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_discuss_channel__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_cc__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_main_attachment__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread_phone__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_contact__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mailing_mailing__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_phone_blacklist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_category__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_pricelist__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_product__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_product_template__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_company__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner_bank__message_partner_ids +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_users__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" From a43eae636cc098fc9c599f9ce3622629b65eaeea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 30 May 2024 16:52:12 +0200 Subject: [PATCH 22/44] [ADD] mail_no_user_assign_notification: New module TT49257 --- mail_no_user_assign_notification/README.rst | 112 +++++ mail_no_user_assign_notification/__init__.py | 1 + .../__manifest__.py | 14 + .../data/ir_config_parameter.xml | 7 + mail_no_user_assign_notification/i18n/es.po | 23 + .../i18n/mail_no_user_assign_notification.pot | 19 + .../models/__init__.py | 3 + .../models/mail_thread.py | 24 + .../readme/CONFIGURE.rst | 7 + .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 1 + .../readme/ROADMAP.rst | 2 + .../readme/USAGE.rst | 4 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 455 ++++++++++++++++++ .../tests/__init__.py | 3 + .../test_mail_no_user_assign_notification.py | 61 +++ 17 files changed, 740 insertions(+) create mode 100644 mail_no_user_assign_notification/README.rst create mode 100644 mail_no_user_assign_notification/__init__.py create mode 100644 mail_no_user_assign_notification/__manifest__.py create mode 100644 mail_no_user_assign_notification/data/ir_config_parameter.xml create mode 100644 mail_no_user_assign_notification/i18n/es.po create mode 100644 mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot create mode 100644 mail_no_user_assign_notification/models/__init__.py create mode 100644 mail_no_user_assign_notification/models/mail_thread.py create mode 100644 mail_no_user_assign_notification/readme/CONFIGURE.rst create mode 100644 mail_no_user_assign_notification/readme/CONTRIBUTORS.rst create mode 100644 mail_no_user_assign_notification/readme/DESCRIPTION.rst create mode 100644 mail_no_user_assign_notification/readme/ROADMAP.rst create mode 100644 mail_no_user_assign_notification/readme/USAGE.rst create mode 100644 mail_no_user_assign_notification/static/description/icon.png create mode 100644 mail_no_user_assign_notification/static/description/index.html create mode 100644 mail_no_user_assign_notification/tests/__init__.py create mode 100644 mail_no_user_assign_notification/tests/test_mail_no_user_assign_notification.py diff --git a/mail_no_user_assign_notification/README.rst b/mail_no_user_assign_notification/README.rst new file mode 100644 index 000000000..fd709d4a1 --- /dev/null +++ b/mail_no_user_assign_notification/README.rst @@ -0,0 +1,112 @@ +================================ +Mail No user Assign Notification +================================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:6a4d1334c05ef20496bb328fb7923f2a690c50cf84df26ff96c75edc66bac568 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github + :target: https://github.com/OCA/social/tree/15.0/mail_no_user_assign_notification + :alt: OCA/social +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/social-15-0/social-15-0-mail_no_user_assign_notification + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=15.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module inhibits the assignation notification from the models that we want. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +#. Go to Settings > Technical > System Parameters +#. Edit "mail_no_user_assign_notification.models" key record +#. Set any model* (for example: res.partner). + +NOTE1: It is possible to set several models separated by comma (e.g.: model1,model2). + +NOTE2: The model should have the field `user_id` for this to be effective. + +Usage +===== + +#. Go to one of the configured models (like Contacts). +#. Create or edit a record, and assign the field for the user (in contacts, it's called + "Salesperson", in purchase orders it's "Purchase representative", etc). +#. The user won't receive the automatic assignment email. + +Known issues / Roadmap +====================== + +* This is not valid for project tasks users assignation, as the field is multi-relational. + A specific extension would be needed. + +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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +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. + +.. |maintainer-victoralmau| image:: https://github.com/victoralmau.png?size=40px + :target: https://github.com/victoralmau + :alt: victoralmau + +Current `maintainer `__: + +|maintainer-victoralmau| + +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_no_user_assign_notification/__init__.py b/mail_no_user_assign_notification/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/mail_no_user_assign_notification/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/mail_no_user_assign_notification/__manifest__.py b/mail_no_user_assign_notification/__manifest__.py new file mode 100644 index 000000000..93484d97a --- /dev/null +++ b/mail_no_user_assign_notification/__manifest__.py @@ -0,0 +1,14 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Mail No user Assign Notification", + "author": "Tecnativa, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/social", + "version": "15.0.1.0.0", + "depends": ["mail"], + "license": "AGPL-3", + "category": "Discuss", + "data": ["data/ir_config_parameter.xml"], + "installable": True, + "maintainers": ["victoralmau"], +} diff --git a/mail_no_user_assign_notification/data/ir_config_parameter.xml b/mail_no_user_assign_notification/data/ir_config_parameter.xml new file mode 100644 index 000000000..d33db04f7 --- /dev/null +++ b/mail_no_user_assign_notification/data/ir_config_parameter.xml @@ -0,0 +1,7 @@ + + + + mail_no_user_assign_notification.models + + + diff --git a/mail_no_user_assign_notification/i18n/es.po b/mail_no_user_assign_notification/i18n/es.po new file mode 100644 index 000000000..3fa5c046b --- /dev/null +++ b/mail_no_user_assign_notification/i18n/es.po @@ -0,0 +1,23 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_no_user_assign_notification +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-30 15:32+0000\n" +"PO-Revision-Date: 2024-05-30 17:33+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"X-Generator: Poedit 3.0.1\n" + +#. module: mail_no_user_assign_notification +#: model:ir.model,name:mail_no_user_assign_notification.model_mail_thread +msgid "Email Thread" +msgstr "Hilo de mensajes" diff --git a/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot b/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot new file mode 100644 index 000000000..224335a7c --- /dev/null +++ b/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot @@ -0,0 +1,19 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_no_user_assign_notification +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: mail_no_user_assign_notification +#: model:ir.model,name:mail_no_user_assign_notification.model_mail_thread +msgid "Email Thread" +msgstr "" diff --git a/mail_no_user_assign_notification/models/__init__.py b/mail_no_user_assign_notification/models/__init__.py new file mode 100644 index 000000000..f2f13374b --- /dev/null +++ b/mail_no_user_assign_notification/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import mail_thread diff --git a/mail_no_user_assign_notification/models/mail_thread.py b/mail_no_user_assign_notification/models/mail_thread.py new file mode 100644 index 000000000..28b02c666 --- /dev/null +++ b/mail_no_user_assign_notification/models/mail_thread.py @@ -0,0 +1,24 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import models + + +class MailThread(models.AbstractModel): + _inherit = "mail.thread" + + def _message_auto_subscribe_followers(self, updated_values, default_subtype_ids): + """Remove user_id from updated_values if this model has been set. + This will prevent the user from auto subscrube to records on creation and/or + assignment.""" + if updated_values.get("user_id"): + icp = self.sudo().env["ir.config_parameter"] + models_to_skip = icp.get_param( + "mail_no_user_assign_notification.models", "" + ) + models_to_skip = [x.strip() for x in models_to_skip.split(",")] + if self._name in models_to_skip: + updated_values.pop("user_id") + return super()._message_auto_subscribe_followers( + updated_values=updated_values, default_subtype_ids=default_subtype_ids + ) diff --git a/mail_no_user_assign_notification/readme/CONFIGURE.rst b/mail_no_user_assign_notification/readme/CONFIGURE.rst new file mode 100644 index 000000000..dfa6df12b --- /dev/null +++ b/mail_no_user_assign_notification/readme/CONFIGURE.rst @@ -0,0 +1,7 @@ +#. Go to Settings > Technical > System Parameters +#. Edit "mail_no_user_assign_notification.models" key record +#. Set any model* (for example: res.partner). + +NOTE1: It is possible to set several models separated by comma (e.g.: model1,model2). + +NOTE2: The model should have the field `user_id` for this to be effective. diff --git a/mail_no_user_assign_notification/readme/CONTRIBUTORS.rst b/mail_no_user_assign_notification/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..5fb713053 --- /dev/null +++ b/mail_no_user_assign_notification/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Tecnativa `_: + + * Víctor Martínez + * Pedro M. Baeza diff --git a/mail_no_user_assign_notification/readme/DESCRIPTION.rst b/mail_no_user_assign_notification/readme/DESCRIPTION.rst new file mode 100644 index 000000000..5242a6317 --- /dev/null +++ b/mail_no_user_assign_notification/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module inhibits the assignation notification from the models that we want. diff --git a/mail_no_user_assign_notification/readme/ROADMAP.rst b/mail_no_user_assign_notification/readme/ROADMAP.rst new file mode 100644 index 000000000..6633bdfa3 --- /dev/null +++ b/mail_no_user_assign_notification/readme/ROADMAP.rst @@ -0,0 +1,2 @@ +* This is not valid for project tasks users assignation, as the field is multi-relational. + A specific extension would be needed. diff --git a/mail_no_user_assign_notification/readme/USAGE.rst b/mail_no_user_assign_notification/readme/USAGE.rst new file mode 100644 index 000000000..28839c376 --- /dev/null +++ b/mail_no_user_assign_notification/readme/USAGE.rst @@ -0,0 +1,4 @@ +#. Go to one of the configured models (like Contacts). +#. Create or edit a record, and assign the field for the user (in contacts, it's called + "Salesperson", in purchase orders it's "Purchase representative", etc). +#. The user won't receive the automatic assignment email. diff --git a/mail_no_user_assign_notification/static/description/icon.png b/mail_no_user_assign_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_no_user_assign_notification/static/description/index.html b/mail_no_user_assign_notification/static/description/index.html new file mode 100644 index 000000000..7ec0fac71 --- /dev/null +++ b/mail_no_user_assign_notification/static/description/index.html @@ -0,0 +1,455 @@ + + + + + +Mail No user Assign Notification + + + +
+

Mail No user Assign Notification

+ + +

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

+

This module inhibits the assignation notification from the models that we want.

+

Table of contents

+ +
+

Configuration

+
    +
  1. Go to Settings > Technical > System Parameters
  2. +
  3. Edit “mail_no_user_assign_notification.models” key record
  4. +
  5. Set any model* (for example: res.partner).
  6. +
+

NOTE1: It is possible to set several models separated by comma (e.g.: model1,model2).

+

NOTE2: The model should have the field user_id for this to be effective.

+
+
+

Usage

+
    +
  1. Go to one of the configured models (like Contacts).
  2. +
  3. Create or edit a record, and assign the field for the user (in contacts, it’s called +“Salesperson”, in purchase orders it’s “Purchase representative”, etc).
  4. +
  5. The user won’t receive the automatic assignment email.
  6. +
+
+
+

Known issues / Roadmap

+
    +
  • This is not valid for project tasks users assignation, as the field is multi-relational. +A specific extension would be needed.
  • +
+
+
+

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 to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa:
      +
    • Víctor Martínez
    • +
    • Pedro M. Baeza
    • +
    +
  • +
+
+
+

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.

+

Current maintainer:

+

victoralmau

+

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_no_user_assign_notification/tests/__init__.py b/mail_no_user_assign_notification/tests/__init__.py new file mode 100644 index 000000000..5a63b7d7d --- /dev/null +++ b/mail_no_user_assign_notification/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_mail_no_user_assign_notification diff --git a/mail_no_user_assign_notification/tests/test_mail_no_user_assign_notification.py b/mail_no_user_assign_notification/tests/test_mail_no_user_assign_notification.py new file mode 100644 index 000000000..4d92f05af --- /dev/null +++ b/mail_no_user_assign_notification/tests/test_mail_no_user_assign_notification.py @@ -0,0 +1,61 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + + +from odoo.tests import common, new_test_user + + +class TestMailNoUserAssignNotification(common.TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.user = new_test_user(cls.env, login="test_user") + cls.icp = cls.env.ref( + "mail_no_user_assign_notification.no_user_assign_notification_models" + ) + cls.icp.value = "res.partner" + # patch registry to simulate a ready environment so that _message_auto_subscribe_notify + # will be executed with the associated notification + cls.env.registry.ready = True + + def _get_mail_messages(self, record): + return self.env["mail.message"].search( + [("model", "=", record._name), ("res_id", "=", record.id)] + ) + + def test_partner_create(self): + partner = self.env["res.partner"].create( + { + "name": "Test partner", + "user_id": self.user.id, + } + ) + all_messages = self._get_mail_messages(partner) + # Message with user_notification is created when the assignment email is sent. + self.assertNotIn("user_notification", all_messages.mapped("message_type")) + # Remove model from config parameter (default behavior) + self.icp.value = "" + extra_partner = self.env["res.partner"].create( + { + "name": "Test partner extra", + "user_id": self.user.id, + } + ) + all_messages = self._get_mail_messages(extra_partner) + message = all_messages.filtered(lambda x: x.message_type == "user_notification") + self.assertIn("You have been assigned to", message.body) + + def test_partner_write(self): + partner = self.env["res.partner"].create({"name": "Test partner"}) + all_messages = self._get_mail_messages(partner) + partner.write({"user_id": self.user.id}) + new_messages = self._get_mail_messages(partner) - all_messages + # Message with user_notification is created when the assignment email is sent. + self.assertNotIn("user_notification", new_messages.mapped("message_type")) + # Remove model from config parameter (default behavior) + self.icp.value = "" + extra_partner = self.env["res.partner"].create({"name": "Test partner extra"}) + all_messages = self._get_mail_messages(extra_partner) + extra_partner.write({"user_id": self.user.id}) + new_messages = self._get_mail_messages(extra_partner) - all_messages + self.assertIn("You have been assigned to", new_messages.body) From 610f3deb17446313492ae5abc8e54cfce17c9a20 Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Thu, 20 Feb 2025 08:08:16 -0500 Subject: [PATCH 23/44] [IMP] mail_no_user_assign_notification: pre-commit auto fixes --- mail_no_user_assign_notification/README.rst | 49 ++++++++++--------- .../pyproject.toml | 3 ++ .../readme/CONFIGURE.md | 8 +++ .../readme/CONFIGURE.rst | 7 --- .../readme/CONTRIBUTORS.md | 3 ++ .../readme/CONTRIBUTORS.rst | 4 -- .../{DESCRIPTION.rst => DESCRIPTION.md} | 3 +- .../readme/ROADMAP.md | 2 + .../readme/ROADMAP.rst | 2 - .../readme/USAGE.md | 5 ++ .../readme/USAGE.rst | 4 -- .../static/description/index.html | 36 ++++++++------ 12 files changed, 70 insertions(+), 56 deletions(-) create mode 100644 mail_no_user_assign_notification/pyproject.toml create mode 100644 mail_no_user_assign_notification/readme/CONFIGURE.md delete mode 100644 mail_no_user_assign_notification/readme/CONFIGURE.rst create mode 100644 mail_no_user_assign_notification/readme/CONTRIBUTORS.md delete mode 100644 mail_no_user_assign_notification/readme/CONTRIBUTORS.rst rename mail_no_user_assign_notification/readme/{DESCRIPTION.rst => DESCRIPTION.md} (80%) create mode 100644 mail_no_user_assign_notification/readme/ROADMAP.md delete mode 100644 mail_no_user_assign_notification/readme/ROADMAP.rst create mode 100644 mail_no_user_assign_notification/readme/USAGE.md delete mode 100644 mail_no_user_assign_notification/readme/USAGE.rst diff --git a/mail_no_user_assign_notification/README.rst b/mail_no_user_assign_notification/README.rst index fd709d4a1..afa59f21b 100644 --- a/mail_no_user_assign_notification/README.rst +++ b/mail_no_user_assign_notification/README.rst @@ -17,18 +17,19 @@ Mail No user Assign 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/15.0/mail_no_user_assign_notification + :target: https://github.com/OCA/social/tree/17.0/mail_no_user_assign_notification :alt: OCA/social .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/social-15-0/social-15-0-mail_no_user_assign_notification + :target: https://translation.odoo-community.org/projects/social-17-0/social-17-0-mail_no_user_assign_notification :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=15.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| -This module inhibits the assignation notification from the models that we want. +This module inhibits the assignation notification from the models that +we want. **Table of contents** @@ -38,27 +39,29 @@ This module inhibits the assignation notification from the models that we want. Configuration ============= -#. Go to Settings > Technical > System Parameters -#. Edit "mail_no_user_assign_notification.models" key record -#. Set any model* (for example: res.partner). +1. Go to Settings > Technical > System Parameters +2. Edit "mailno_user_assign_notification.models" key record +3. Set any model\* (for example: res.partner). -NOTE1: It is possible to set several models separated by comma (e.g.: model1,model2). +NOTE1: It is possible to set several models separated by comma (e.g.: +model1,model2). -NOTE2: The model should have the field `user_id` for this to be effective. +NOTE2: The model should have the field user_id for this to be effective. Usage ===== -#. Go to one of the configured models (like Contacts). -#. Create or edit a record, and assign the field for the user (in contacts, it's called - "Salesperson", in purchase orders it's "Purchase representative", etc). -#. The user won't receive the automatic assignment email. +1. Go to one of the configured models (like Contacts). +2. Create or edit a record, and assign the field for the user (in + contacts, it's called "Salesperson", in purchase orders it's + "Purchase representative", etc). +3. The user won't receive the automatic assignment email. Known issues / Roadmap ====================== -* This is not valid for project tasks users assignation, as the field is multi-relational. - A specific extension would be needed. +- This is not valid for project tasks users assignation, as the field is + multi-relational. A specific extension would be needed. Bug Tracker =========== @@ -66,7 +69,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -74,20 +77,20 @@ Credits ======= Authors -~~~~~~~ +------- * Tecnativa Contributors -~~~~~~~~~~~~ +------------ -* `Tecnativa `_: +- `Tecnativa `__: - * Víctor Martínez - * Pedro M. Baeza + - Víctor Martínez + - Pedro M. Baeza Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -107,6 +110,6 @@ Current `maintainer `__: |maintainer-victoralmau| -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_no_user_assign_notification/pyproject.toml b/mail_no_user_assign_notification/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/mail_no_user_assign_notification/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/mail_no_user_assign_notification/readme/CONFIGURE.md b/mail_no_user_assign_notification/readme/CONFIGURE.md new file mode 100644 index 000000000..c18b02230 --- /dev/null +++ b/mail_no_user_assign_notification/readme/CONFIGURE.md @@ -0,0 +1,8 @@ +1. Go to Settings \> Technical \> System Parameters +2. Edit "mailno_user_assign_notification.models" key record +3. Set any model\* (for example: res.partner). + +NOTE1: It is possible to set several models separated by comma (e.g.: +model1,model2). + +NOTE2: The model should have the field user_id for this to be effective. diff --git a/mail_no_user_assign_notification/readme/CONFIGURE.rst b/mail_no_user_assign_notification/readme/CONFIGURE.rst deleted file mode 100644 index dfa6df12b..000000000 --- a/mail_no_user_assign_notification/readme/CONFIGURE.rst +++ /dev/null @@ -1,7 +0,0 @@ -#. Go to Settings > Technical > System Parameters -#. Edit "mail_no_user_assign_notification.models" key record -#. Set any model* (for example: res.partner). - -NOTE1: It is possible to set several models separated by comma (e.g.: model1,model2). - -NOTE2: The model should have the field `user_id` for this to be effective. diff --git a/mail_no_user_assign_notification/readme/CONTRIBUTORS.md b/mail_no_user_assign_notification/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..5fee39042 --- /dev/null +++ b/mail_no_user_assign_notification/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- [Tecnativa](https://www.tecnativa.com): + - Víctor Martínez + - Pedro M. Baeza diff --git a/mail_no_user_assign_notification/readme/CONTRIBUTORS.rst b/mail_no_user_assign_notification/readme/CONTRIBUTORS.rst deleted file mode 100644 index 5fb713053..000000000 --- a/mail_no_user_assign_notification/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,4 +0,0 @@ -* `Tecnativa `_: - - * Víctor Martínez - * Pedro M. Baeza diff --git a/mail_no_user_assign_notification/readme/DESCRIPTION.rst b/mail_no_user_assign_notification/readme/DESCRIPTION.md similarity index 80% rename from mail_no_user_assign_notification/readme/DESCRIPTION.rst rename to mail_no_user_assign_notification/readme/DESCRIPTION.md index 5242a6317..e94865168 100644 --- a/mail_no_user_assign_notification/readme/DESCRIPTION.rst +++ b/mail_no_user_assign_notification/readme/DESCRIPTION.md @@ -1 +1,2 @@ -This module inhibits the assignation notification from the models that we want. +This module inhibits the assignation notification from the models that +we want. diff --git a/mail_no_user_assign_notification/readme/ROADMAP.md b/mail_no_user_assign_notification/readme/ROADMAP.md new file mode 100644 index 000000000..e880900b8 --- /dev/null +++ b/mail_no_user_assign_notification/readme/ROADMAP.md @@ -0,0 +1,2 @@ +- This is not valid for project tasks users assignation, as the field is + multi-relational. A specific extension would be needed. diff --git a/mail_no_user_assign_notification/readme/ROADMAP.rst b/mail_no_user_assign_notification/readme/ROADMAP.rst deleted file mode 100644 index 6633bdfa3..000000000 --- a/mail_no_user_assign_notification/readme/ROADMAP.rst +++ /dev/null @@ -1,2 +0,0 @@ -* This is not valid for project tasks users assignation, as the field is multi-relational. - A specific extension would be needed. diff --git a/mail_no_user_assign_notification/readme/USAGE.md b/mail_no_user_assign_notification/readme/USAGE.md new file mode 100644 index 000000000..72ca425c5 --- /dev/null +++ b/mail_no_user_assign_notification/readme/USAGE.md @@ -0,0 +1,5 @@ +1. Go to one of the configured models (like Contacts). +2. Create or edit a record, and assign the field for the user (in + contacts, it's called "Salesperson", in purchase orders it's + "Purchase representative", etc). +3. The user won't receive the automatic assignment email. diff --git a/mail_no_user_assign_notification/readme/USAGE.rst b/mail_no_user_assign_notification/readme/USAGE.rst deleted file mode 100644 index 28839c376..000000000 --- a/mail_no_user_assign_notification/readme/USAGE.rst +++ /dev/null @@ -1,4 +0,0 @@ -#. Go to one of the configured models (like Contacts). -#. Create or edit a record, and assign the field for the user (in contacts, it's called - "Salesperson", in purchase orders it's "Purchase representative", etc). -#. The user won't receive the automatic assignment email. diff --git a/mail_no_user_assign_notification/static/description/index.html b/mail_no_user_assign_notification/static/description/index.html index 7ec0fac71..e3a9a83c9 100644 --- a/mail_no_user_assign_notification/static/description/index.html +++ b/mail_no_user_assign_notification/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -368,8 +369,9 @@

Mail No user Assign Notification

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:6a4d1334c05ef20496bb328fb7923f2a690c50cf84df26ff96c75edc66bac568 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

-

This module inhibits the assignation notification from the models that we want.

+

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

+

This module inhibits the assignation notification from the models that +we want.

Table of contents

    @@ -389,26 +391,28 @@

    Mail No user Assign Notification

    Configuration

    1. Go to Settings > Technical > System Parameters
    2. -
    3. Edit “mail_no_user_assign_notification.models” key record
    4. +
    5. Edit “mailno_user_assign_notification.models” key record
    6. Set any model* (for example: res.partner).
    -

    NOTE1: It is possible to set several models separated by comma (e.g.: model1,model2).

    -

    NOTE2: The model should have the field user_id for this to be effective.

    +

    NOTE1: It is possible to set several models separated by comma (e.g.: +model1,model2).

    +

    NOTE2: The model should have the field user_id for this to be effective.

Usage

  1. Go to one of the configured models (like Contacts).
  2. -
  3. Create or edit a record, and assign the field for the user (in contacts, it’s called -“Salesperson”, in purchase orders it’s “Purchase representative”, etc).
  4. +
  5. Create or edit a record, and assign the field for the user (in +contacts, it’s called “Salesperson”, in purchase orders it’s +“Purchase representative”, etc).
  6. The user won’t receive the automatic assignment email.

Known issues / Roadmap

    -
  • This is not valid for project tasks users assignation, as the field is multi-relational. -A specific extension would be needed.
  • +
  • This is not valid for project tasks users assignation, as the field is +multi-relational. A specific extension would be needed.
@@ -416,7 +420,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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -440,13 +444,15 @@

Contributors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +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.

Current maintainer:

victoralmau

-

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 8be8426706c9c2189a96291f91b7976e0ba53ead Mon Sep 17 00:00:00 2001 From: Carlos Lopez Date: Thu, 20 Feb 2025 08:53:43 -0500 Subject: [PATCH 24/44] [MIG] mail_no_user_assign_notification: Migration to version 17.0 --- mail_no_user_assign_notification/__manifest__.py | 2 +- .../tests/test_mail_no_user_assign_notification.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mail_no_user_assign_notification/__manifest__.py b/mail_no_user_assign_notification/__manifest__.py index 93484d97a..5836a5842 100644 --- a/mail_no_user_assign_notification/__manifest__.py +++ b/mail_no_user_assign_notification/__manifest__.py @@ -4,7 +4,7 @@ "name": "Mail No user Assign Notification", "author": "Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/social", - "version": "15.0.1.0.0", + "version": "17.0.1.0.0", "depends": ["mail"], "license": "AGPL-3", "category": "Discuss", diff --git a/mail_no_user_assign_notification/tests/test_mail_no_user_assign_notification.py b/mail_no_user_assign_notification/tests/test_mail_no_user_assign_notification.py index 4d92f05af..42b053471 100644 --- a/mail_no_user_assign_notification/tests/test_mail_no_user_assign_notification.py +++ b/mail_no_user_assign_notification/tests/test_mail_no_user_assign_notification.py @@ -14,7 +14,8 @@ def setUpClass(cls): "mail_no_user_assign_notification.no_user_assign_notification_models" ) cls.icp.value = "res.partner" - # patch registry to simulate a ready environment so that _message_auto_subscribe_notify + # patch registry to simulate a ready environment + # so that _message_auto_subscribe_notify # will be executed with the associated notification cls.env.registry.ready = True From cd7d8833fefeaddc8c5648f190aad484b8cb7b9e Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 21 Feb 2025 16:06:28 +0000 Subject: [PATCH 25/44] [UPD] Update mail_no_user_assign_notification.pot --- .../i18n/mail_no_user_assign_notification.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot b/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot index 224335a7c..f25cceaf0 100644 --- a/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot +++ b/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" From 4bf7b91119192ad0e438cedf387821870301577a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 21 Feb 2025 16:11:03 +0000 Subject: [PATCH 26/44] [BOT] post-merge updates --- mail_no_user_assign_notification/README.rst | 2 +- mail_no_user_assign_notification/static/description/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mail_no_user_assign_notification/README.rst b/mail_no_user_assign_notification/README.rst index afa59f21b..7414bcba3 100644 --- a/mail_no_user_assign_notification/README.rst +++ b/mail_no_user_assign_notification/README.rst @@ -7,7 +7,7 @@ Mail No user Assign Notification !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:6a4d1334c05ef20496bb328fb7923f2a690c50cf84df26ff96c75edc66bac568 + !! source digest: sha256:6c92038441171972dbb95e3ac02db0ce3b006a4157f7370390fbd10ff9bd1893 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/mail_no_user_assign_notification/static/description/index.html b/mail_no_user_assign_notification/static/description/index.html index e3a9a83c9..1853fbb28 100644 --- a/mail_no_user_assign_notification/static/description/index.html +++ b/mail_no_user_assign_notification/static/description/index.html @@ -367,7 +367,7 @@

Mail No user Assign Notification

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:6a4d1334c05ef20496bb328fb7923f2a690c50cf84df26ff96c75edc66bac568 +!! source digest: sha256:6c92038441171972dbb95e3ac02db0ce3b006a4157f7370390fbd10ff9bd1893 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

This module inhibits the assignation notification from the models that From 620e04944ec00a80d759a2c3e66e8f40e3081d75 Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 1 Apr 2025 16:42:33 +0000 Subject: [PATCH 27/44] Added translation using Weblate (Italian) --- mail_no_user_assign_notification/i18n/it.po | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 mail_no_user_assign_notification/i18n/it.po diff --git a/mail_no_user_assign_notification/i18n/it.po b/mail_no_user_assign_notification/i18n/it.po new file mode 100644 index 000000000..54bded423 --- /dev/null +++ b/mail_no_user_assign_notification/i18n/it.po @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_no_user_assign_notification +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\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" + +#. module: mail_no_user_assign_notification +#: model:ir.model,name:mail_no_user_assign_notification.model_mail_thread +msgid "Email Thread" +msgstr "" From 9e84d2768222c42b122282455961c662e57174cd Mon Sep 17 00:00:00 2001 From: mymage Date: Sat, 5 Apr 2025 08:21:40 +0000 Subject: [PATCH 28/44] Translated using Weblate (Italian) Currently translated at 100.0% (1 of 1 strings) Translation: social-17.0/social-17.0-mail_no_user_assign_notification Translate-URL: https://translation.odoo-community.org/projects/social-17-0/social-17-0-mail_no_user_assign_notification/it/ --- mail_no_user_assign_notification/i18n/it.po | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mail_no_user_assign_notification/i18n/it.po b/mail_no_user_assign_notification/i18n/it.po index 54bded423..18fa4e3e6 100644 --- a/mail_no_user_assign_notification/i18n/it.po +++ b/mail_no_user_assign_notification/i18n/it.po @@ -6,15 +6,17 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2025-04-05 08:50+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\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" +"X-Generator: Weblate 5.10.2\n" #. module: mail_no_user_assign_notification #: model:ir.model,name:mail_no_user_assign_notification.model_mail_thread msgid "Email Thread" -msgstr "" +msgstr "Discussione e-mail" From 7f7104d6d435e935ba70d5c48d2d54942c8c720b Mon Sep 17 00:00:00 2001 From: Jorge Quinteros Date: Tue, 10 Feb 2026 00:25:31 +0100 Subject: [PATCH 29/44] [IMP] mail_no_user_assign_notification: pre-commit auto fixes --- mail_no_user_assign_notification/README.rst | 16 ++++++++-------- .../__manifest__.py | 2 +- .../static/description/index.html | 19 ++++++++----------- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/mail_no_user_assign_notification/README.rst b/mail_no_user_assign_notification/README.rst index 7414bcba3..a963891de 100644 --- a/mail_no_user_assign_notification/README.rst +++ b/mail_no_user_assign_notification/README.rst @@ -16,14 +16,14 @@ Mail No user Assign Notification .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 -.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github - :target: https://github.com/OCA/social/tree/17.0/mail_no_user_assign_notification - :alt: OCA/social +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github + :target: https://github.com/OCA/mail/tree/18.0/mail_no_user_assign_notification + :alt: OCA/mail .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/social-17-0/social-17-0-mail_no_user_assign_notification + :target: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_no_user_assign_notification :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/mail&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -66,10 +66,10 @@ Known issues / Roadmap Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. +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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -110,6 +110,6 @@ Current `maintainer `__: |maintainer-victoralmau| -This module is part of the `OCA/social `_ project on GitHub. +This module is part of the `OCA/mail `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/mail_no_user_assign_notification/__manifest__.py b/mail_no_user_assign_notification/__manifest__.py index 5836a5842..1a7668bac 100644 --- a/mail_no_user_assign_notification/__manifest__.py +++ b/mail_no_user_assign_notification/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Mail No user Assign Notification", "author": "Tecnativa, Odoo Community Association (OCA)", - "website": "https://github.com/OCA/social", + "website": "https://github.com/OCA/mail", "version": "17.0.1.0.0", "depends": ["mail"], "license": "AGPL-3", diff --git a/mail_no_user_assign_notification/static/description/index.html b/mail_no_user_assign_notification/static/description/index.html index 1853fbb28..ba252ce3f 100644 --- a/mail_no_user_assign_notification/static/description/index.html +++ b/mail_no_user_assign_notification/static/description/index.html @@ -8,11 +8,10 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ +:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. -Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +274,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: gray; } /* line numbers */ +pre.code .ln { color: grey; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +300,7 @@ span.pre { white-space: pre } -span.problematic, pre.problematic { +span.problematic { color: red } span.section-subtitle { @@ -369,7 +368,7 @@

Mail No user Assign Notification

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:6c92038441171972dbb95e3ac02db0ce3b006a4157f7370390fbd10ff9bd1893 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

This module inhibits the assignation notification from the models that we want.

Table of contents

@@ -417,10 +416,10 @@

Known issues / Roadmap

Bug Tracker

-

Bugs are tracked on GitHub Issues. +

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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -444,15 +443,13 @@

Contributors

Maintainers

This module is maintained by the OCA.

- -Odoo Community Association - +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.

Current maintainer:

victoralmau

-

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

+

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

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

From 1800c605f32475d493ab532397f22dfe2c7392c7 Mon Sep 17 00:00:00 2001 From: Jorge Quinteros Date: Tue, 10 Feb 2026 00:25:32 +0100 Subject: [PATCH 30/44] [MIG] mail_no_user_assign_notification: Migration to 18.0 --- mail_no_user_assign_notification/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mail_no_user_assign_notification/__manifest__.py b/mail_no_user_assign_notification/__manifest__.py index 1a7668bac..08d922dc0 100644 --- a/mail_no_user_assign_notification/__manifest__.py +++ b/mail_no_user_assign_notification/__manifest__.py @@ -4,7 +4,7 @@ "name": "Mail No user Assign Notification", "author": "Tecnativa, Odoo Community Association (OCA)", "website": "https://github.com/OCA/mail", - "version": "17.0.1.0.0", + "version": "18.0.1.0.0", "depends": ["mail"], "license": "AGPL-3", "category": "Discuss", From 39cb1e0b3f0211bdd41a75f4d2c8d214796bf564 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 12 Feb 2026 12:58:48 +0000 Subject: [PATCH 31/44] [UPD] Update mail_no_user_assign_notification.pot --- .../i18n/mail_no_user_assign_notification.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot b/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot index f25cceaf0..b7028132e 100644 --- a/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot +++ b/mail_no_user_assign_notification/i18n/mail_no_user_assign_notification.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" From 1d2028b5b0106e59767e106dc314ce6edcf08fc5 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 12 Feb 2026 13:02:58 +0000 Subject: [PATCH 32/44] [BOT] post-merge updates --- README.md | 1 + mail_no_user_assign_notification/README.rst | 8 +++- .../static/description/index.html | 43 +++++++++++-------- setup/_metapackage/pyproject.toml | 3 +- 4 files changed, 35 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index f4f4bdd56..d3f076d12 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ addon | version | maintainers | summary [mail_inline_css](mail_inline_css/) | 18.0.1.0.0 | | Convert style tags in inline style in your mails [mail_layout_preview](mail_layout_preview/) | 18.0.1.0.0 | | Preview email templates in the browser [mail_message_search](mail_message_search/) | 18.0.1.0.2 | yostashiro aungkokolin1997 | Mail Message Search +[mail_no_user_assign_notification](mail_no_user_assign_notification/) | 18.0.1.0.0 | victoralmau | Mail No user Assign Notification [mail_notification_clean_status_error](mail_notification_clean_status_error/) | 18.0.1.0.0 | sebalix | Extend Odoo scheduled action to also delete notifications in error. [mail_notification_custom_subject](mail_notification_custom_subject/) | 18.0.1.0.0 | yajo | Apply a custom subject to mail notifications [mail_optional_autofollow](mail_optional_autofollow/) | 18.0.1.0.0 | | Choose if you want to automatically add new recipients as followers on mail.compose.message diff --git a/mail_no_user_assign_notification/README.rst b/mail_no_user_assign_notification/README.rst index a963891de..6347a4fbe 100644 --- a/mail_no_user_assign_notification/README.rst +++ b/mail_no_user_assign_notification/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ================================ Mail No user Assign Notification ================================ @@ -7,13 +11,13 @@ Mail No user Assign Notification !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:6c92038441171972dbb95e3ac02db0ce3b006a4157f7370390fbd10ff9bd1893 + !! source digest: sha256:2258ebf0f9828ca3d8384d904798cf7e1e4d0d9deb76aa232524103948b1c5de !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github diff --git a/mail_no_user_assign_notification/static/description/index.html b/mail_no_user_assign_notification/static/description/index.html index ba252ce3f..f909eb7ce 100644 --- a/mail_no_user_assign_notification/static/description/index.html +++ b/mail_no_user_assign_notification/static/description/index.html @@ -3,15 +3,16 @@ -Mail No user Assign Notification +README.rst -
-

Mail No user Assign Notification

+
+ + +Odoo Community Association + +
+

Mail No user Assign Notification

-

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

This module inhibits the assignation notification from the models that we want.

Table of contents

@@ -387,7 +393,7 @@

Mail No user Assign Notification

-

Configuration

+

Configuration

  1. Go to Settings > Technical > System Parameters
  2. Edit “mailno_user_assign_notification.models” key record
  3. @@ -398,7 +404,7 @@

    Configuration

    NOTE2: The model should have the field user_id for this to be effective.

-

Usage

+

Usage

  1. Go to one of the configured models (like Contacts).
  2. Create or edit a record, and assign the field for the user (in @@ -408,14 +414,14 @@

    Usage

-

Known issues / Roadmap

+

Known issues / Roadmap

  • This is not valid for project tasks users assignation, as the field is multi-relational. A specific extension would be needed.
-

Bug Tracker

+

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 to smash it by providing a detailed and welcomed @@ -423,15 +429,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Tecnativa
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +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.

@@ -454,5 +462,6 @@

Maintainers

+
diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index 0f98b4601..b445b5bc3 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "odoo-addons-oca-mail" -version = "18.0.20260113.0" +version = "18.0.20260212.0" dependencies = [ "odoo-addon-base_search_mail_content==18.0.*", "odoo-addon-mail_activity_board==18.0.*", @@ -20,6 +20,7 @@ dependencies = [ "odoo-addon-mail_inline_css==18.0.*", "odoo-addon-mail_layout_preview==18.0.*", "odoo-addon-mail_message_search==18.0.*", + "odoo-addon-mail_no_user_assign_notification==18.0.*", "odoo-addon-mail_notification_clean_status_error==18.0.*", "odoo-addon-mail_notification_custom_subject==18.0.*", "odoo-addon-mail_optional_autofollow==18.0.*", From 6dfd58b8d0f9352db2757fc523992e14feb566c2 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 12 Feb 2026 16:01:45 +0000 Subject: [PATCH 33/44] [UPD] Update mail_forward.pot --- mail_forward/i18n/mail_forward.pot | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/mail_forward/i18n/mail_forward.pot b/mail_forward/i18n/mail_forward.pot index f6433128d..78c037ab3 100644 --- a/mail_forward/i18n/mail_forward.pot +++ b/mail_forward/i18n/mail_forward.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 17.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -16,18 +16,15 @@ msgstr "" #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 -#, python-format msgid "---------- Forwarded message ---------" msgstr "" #. module: mail_forward -#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_gateway_message__forward_type__another_thread #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__another_thread msgid "Another thread" msgstr "" #. module: mail_forward -#: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_gateway_message__forward_type__current_thread #: model:ir.model.fields.selection,name:mail_forward.selection__mail_compose_message__forward_type__current_thread msgid "Current thread" msgstr "" @@ -35,7 +32,6 @@ msgstr "" #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 -#, python-format msgid "Date" msgstr "" @@ -68,7 +64,6 @@ msgstr "" #. odoo-javascript #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 #: code:addons/mail_forward/static/src/core/common/message_actions.esm.js:0 -#, python-format msgid "Forward" msgstr "" @@ -77,34 +72,28 @@ msgstr "" #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 -#: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 -#, python-format msgid "Forward Message" msgstr "" #. module: mail_forward #. odoo-javascript #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 -#, python-format msgid "Forward Message Center" msgstr "" #. module: mail_forward #. odoo-javascript #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 -#, python-format msgid "Forward Message Left" msgstr "" #. module: mail_forward #. odoo-javascript #: code:addons/mail_forward/static/src/components/forward_message/forward_message.xml:0 -#, python-format msgid "Forward Message Right" msgstr "" #. module: mail_forward -#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_gateway_message__forward_type #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_type msgid "Forward Type" msgstr "" @@ -112,14 +101,12 @@ msgstr "" #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 -#, python-format msgid "From" msgstr "" #. module: mail_forward #. odoo-python #: code:addons/mail_forward/wizards/mail_compose_message.py:0 -#, python-format msgid "Fwd:" msgstr "" @@ -136,19 +123,16 @@ msgstr "" #. module: mail_forward #. odoo-python #: code:addons/mail_forward/wizards/mail_compose_message.py:0 -#, python-format msgid "Re:" msgstr "" #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 -#, python-format msgid "Subject" msgstr "" #. module: mail_forward -#: model:ir.model.fields,field_description:mail_forward.field_mail_compose_gateway_message__forward_thread #: model:ir.model.fields,field_description:mail_forward.field_mail_compose_message__forward_thread msgid "Thread to forward" msgstr "" @@ -156,6 +140,5 @@ msgstr "" #. module: mail_forward #. odoo-python #: code:addons/mail_forward/models/mail_message.py:0 -#, python-format msgid "To" msgstr "" From d5989f20d7a23c92a2b0ee4aff6aef8c317bae97 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 12 Feb 2026 16:06:04 +0000 Subject: [PATCH 34/44] [BOT] post-merge updates --- README.md | 1 + mail_forward/README.rst | 8 ++++-- mail_forward/static/description/index.html | 30 +++++++++++++--------- setup/_metapackage/pyproject.toml | 3 ++- 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index d3f076d12..296297002 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ addon | version | maintainers | summary [mail_drop_target](mail_drop_target/) | 18.0.1.0.1 | | Attach emails to Odoo by dragging them from your desktop [mail_extra_header](mail_extra_header/) | 18.0.1.0.0 | | Adds extra headers per mail server to sent mails. [mail_force_email_notification](mail_force_email_notification/) | 18.0.1.0.0 | | Context key to define notifications to be sent by emaildefined by force_notification_by_email context key +[mail_forward](mail_forward/) | 18.0.1.0.0 | carlos-lopez-tecnativa | Forward messages from the chatter of any document to other users. [mail_inline_css](mail_inline_css/) | 18.0.1.0.0 | | Convert style tags in inline style in your mails [mail_layout_preview](mail_layout_preview/) | 18.0.1.0.0 | | Preview email templates in the browser [mail_message_search](mail_message_search/) | 18.0.1.0.2 | yostashiro aungkokolin1997 | Mail Message Search diff --git a/mail_forward/README.rst b/mail_forward/README.rst index 67a46664e..fbb07ac6b 100644 --- a/mail_forward/README.rst +++ b/mail_forward/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ==================== Mail Forward Message ==================== @@ -7,13 +11,13 @@ Mail Forward Message !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:5ef4a37a086e596348f4dcec546d3ceadf405792c3f2c6481397d2ff574839d9 + !! source digest: sha256:19e58a575d762a3eafc85e4ed9ae051aa7c39dc0a342eed2b1fd4c5b6e3af561 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmail-lightgray.png?logo=github diff --git a/mail_forward/static/description/index.html b/mail_forward/static/description/index.html index 5288509cd..2ad7ecd9e 100644 --- a/mail_forward/static/description/index.html +++ b/mail_forward/static/description/index.html @@ -3,7 +3,7 @@ -Mail Forward Message +README.rst -
-

Mail Forward Message

+
+ + +Odoo Community Association + +
+

Mail Forward Message

-

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

This module allows users to forward messages from the chatter of any document to:

    @@ -393,7 +398,7 @@

    Mail Forward Message

-

Configuration

+

Configuration

To enable a model to forward messages to another thread:

  • With debug mode activated, go to @@ -404,7 +409,7 @@

    Configuration

-

Usage

+

Usage

To use this module, follow these steps:

  • Navigate to the chatter of any document.
  • @@ -420,7 +425,7 @@

    Usage

-

Bug Tracker

+

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 to smash it by providing a detailed and welcomed @@ -428,15 +433,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Tecnativa
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -460,5 +465,6 @@

Maintainers

+
diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index b445b5bc3..df8afc237 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "odoo-addons-oca-mail" -version = "18.0.20260212.0" +version = "18.0.20260212.1" dependencies = [ "odoo-addon-base_search_mail_content==18.0.*", "odoo-addon-mail_activity_board==18.0.*", @@ -17,6 +17,7 @@ dependencies = [ "odoo-addon-mail_drop_target==18.0.*", "odoo-addon-mail_extra_header==18.0.*", "odoo-addon-mail_force_email_notification==18.0.*", + "odoo-addon-mail_forward==18.0.*", "odoo-addon-mail_inline_css==18.0.*", "odoo-addon-mail_layout_preview==18.0.*", "odoo-addon-mail_message_search==18.0.*", From 022a6994becadf8f06f36e153f27381cecb3df24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bet=C3=BCl=20=C3=96=C4=9Fmen?= Date: Fri, 13 Feb 2026 09:57:41 +0000 Subject: [PATCH 35/44] Translated using Weblate (Turkish) Currently translated at 96.1% (124 of 129 strings) Translation: mail-18.0/mail-18.0-mail_tracking Translate-URL: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_tracking/tr/ --- mail_tracking/i18n/tr.po | 224 ++++++++++++++++++++------------------- 1 file changed, 114 insertions(+), 110 deletions(-) diff --git a/mail_tracking/i18n/tr.po b/mail_tracking/i18n/tr.po index 05d2a6bb2..86479499f 100644 --- a/mail_tracking/i18n/tr.po +++ b/mail_tracking/i18n/tr.po @@ -9,14 +9,15 @@ msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-22 00:51+0000\n" -"PO-Revision-Date: 2017-07-22 00:51+0000\n" -"Last-Translator: OCA Transbot , 2016\n" +"PO-Revision-Date: 2026-02-13 12:09+0000\n" +"Last-Translator: Betül Öğmen \n" "Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Weblate 5.15.2\n" #. module: mail_tracking #: model:ir.model.fields,help:mail_tracking.field_mail_tracking_email__state @@ -45,39 +46,39 @@ msgstr "" #. module: mail_tracking #: model:ir.model.fields,help:mail_tracking.field_mail_message__email_cc msgid "Additional recipients that receive a \"Carbon Copy\" of the e-mail" -msgstr "" +msgstr "E-postanın \"Karbon Kopyası\"nı alan ek alıcılar" #. module: mail_tracking #. odoo-python #: code:addons/mail_tracking/models/mail_thread.py:0 msgid "Anon. To" -msgstr "" +msgstr "Anonim. Kime" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Anonymous Recipient" -msgstr "" +msgstr "Anonim Alıcı" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search msgid "Bounce" -msgstr "" +msgstr "Atla" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__bounce_description msgid "Bounce Description" -msgstr "" +msgstr "Atlama Açıklaması" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__bounce_type msgid "Bounce Type" -msgstr "" +msgstr "Atlama Tipi" #. module: mail_tracking #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_email__state__bounced msgid "Bounced" -msgstr "" +msgstr "Geri Döndü" #. module: mail_tracking #. odoo-javascript @@ -91,32 +92,32 @@ msgstr "" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search msgid "Click" -msgstr "" +msgstr "Tıkla" #. module: mail_tracking #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_event__event_type__click msgid "Clicked" -msgstr "" +msgstr "Tıklandı" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__url msgid "Clicked URL" -msgstr "" +msgstr "Tıklanan URL" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_res_company msgid "Companies" -msgstr "" +msgstr "Şirketler" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_res_config_settings msgid "Config Settings" -msgstr "" +msgstr "Yapılandırma Ayarları" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_res_partner msgid "Contact" -msgstr "" +msgstr "Kontak" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_form @@ -148,13 +149,13 @@ msgstr "Tarih" #. module: mail_tracking #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_event__event_type__deferral msgid "Deferral" -msgstr "" +msgstr "Erteleme" #. module: mail_tracking #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_email__state__deferred #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_search msgid "Deferred" -msgstr "" +msgstr "Ertelendi" #. module: mail_tracking #. odoo-python @@ -164,25 +165,25 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_search #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search msgid "Delivered" -msgstr "" +msgstr "Teslim Edildi" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Delivered Status Center Checkmark" -msgstr "" +msgstr "Teslim Edildi Durumu Merkez Tik" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Delivered Status Left Checkmark" -msgstr "" +msgstr "Teslim Edildi Durumu Sol Tik" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Delivered Status Right Checkmark" -msgstr "" +msgstr "Teslim Edildi Durumu Sağ Tik" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__display_name @@ -199,43 +200,40 @@ msgstr "Eposta" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_mail_alias msgid "Email Aliases" -msgstr "" +msgstr "E-posta Rumuzları" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_bounced_mixin__email_bounced #: model:ir.model.fields,field_description:mail_tracking.field_res_partner__email_bounced #: model:ir.model.fields,field_description:mail_tracking.field_res_users__email_bounced msgid "Email Bounced" -msgstr "" +msgstr "E-posta Geri Döndü" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_mail_alias_domain msgid "Email Domain" -msgstr "" +msgstr "E-posta Alan Adı" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_res_partner__email_score #: model:ir.model.fields,field_description:mail_tracking.field_res_users__email_score -#, fuzzy msgid "Email Score" -msgstr "Eposta" +msgstr "E-posta Skoru" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_mail_thread -#, fuzzy msgid "Email Thread" -msgstr "Eposta" +msgstr "E-posta Konusu" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_res_partner_filter msgid "Email bounced" -msgstr "" +msgstr "E-posta geri döndü" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_mail_resend_message -#, fuzzy msgid "Email resend wizard" -msgstr "Eposta" +msgstr "E-posta tekrar iletme sihirbazı" #. module: mail_tracking #. odoo-python @@ -249,34 +247,34 @@ msgstr "Hata" #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__error_description #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__error_description msgid "Error Description" -msgstr "" +msgstr "Hata Açıklaması" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__error_details msgid "Error Details" -msgstr "" +msgstr "Hata Detayları" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__error_smtp_server msgid "Error SMTP server" -msgstr "" +msgstr "Hata SMTP sunucusu" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Error Status" -msgstr "" +msgstr "Hata Durumu" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__error_type #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__error_type msgid "Error Type" -msgstr "" +msgstr "Hata Türü" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__event_type msgid "Event Type" -msgstr "" +msgstr "Etkinlik Türü" #. module: mail_tracking #. odoo-javascript @@ -285,7 +283,7 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_search #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search msgid "Failed" -msgstr "" +msgstr "Başarısız" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_account_account__failed_message_ids @@ -316,40 +314,39 @@ msgstr "" #: model:ir.model.fields,field_description:mail_tracking.field_res_partner__failed_message_ids #: model:ir.model.fields,field_description:mail_tracking.field_res_partner_bank__failed_message_ids #: model:ir.model.fields,field_description:mail_tracking.field_res_users__failed_message_ids -#, fuzzy msgid "Failed Messages" -msgstr "İleti" +msgstr "Başarısız Mesajlar" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/failed_message/failed_message.xml:0 #: code:addons/mail_tracking/static/src/core/message/message.xml:0 msgid "Failed Recipients:" -msgstr "" +msgstr "Başarısız Alıcılar:" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/core/chatter/chatter.xml:0 msgid "Failed messages" -msgstr "" +msgstr "Başarısız iletiler" #. module: mail_tracking #. odoo-python #: code:addons/mail_tracking/models/mail_thread.py:0 msgid "Failed sent messages" -msgstr "" +msgstr "Mesajları göndermek başarısız oldu" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/failed_message/failed_message.xml:0 msgid "Go" -msgstr "" +msgstr "Git" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/failed_message/failed_message.xml:0 msgid "Go to message" -msgstr "" +msgstr "Mesaja git" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_search @@ -360,7 +357,7 @@ msgstr "Grupla" #. module: mail_tracking #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_event__event_type__hard_bounce msgid "Hard bounce" -msgstr "" +msgstr "Zorla atla" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__id @@ -380,23 +377,25 @@ msgid "" "If set as positive integer enables the deletion of old mail tracking records " "to reduce the database size." msgstr "" +"Pozitif bir tamsayı olarak ayarlanırsa, veritabanı boyutunu küçültmek için " +"eski posta takip kayıtlarının silinmesini sağlar." #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/failed_message/failed_message.xml:0 msgid "Info" -msgstr "" +msgstr "Bilgi" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_mail__is_failed_message #: model:ir.model.fields,field_description:mail_tracking.field_mail_message__is_failed_message msgid "Is Failed Message" -msgstr "" +msgstr "Başarısız Olan Mesaj" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__mobile msgid "Is mobile?" -msgstr "" +msgstr "Devingen mi?" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__write_uid @@ -413,68 +412,67 @@ msgstr "Son güncelleme" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__mail_message_id msgid "Mail Message" -msgstr "" +msgstr "E-posta Mesajı" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_ir_mail_server -#, fuzzy msgid "Mail Server" -msgstr "Eposta" +msgstr "E-posta Sunucusu" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_mail__mail_tracking_needs_action #: model:ir.model.fields,field_description:mail_tracking.field_mail_message__mail_tracking_needs_action msgid "Mail Tracking Needs Action" -msgstr "" +msgstr "E-Posta Takibi Eylem Gerektiriyor" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_mail__mail_tracking_ids #: model:ir.model.fields,field_description:mail_tracking.field_mail_message__mail_tracking_ids msgid "Mail Trackings" -msgstr "" +msgstr "E-Posta Takipleri" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_mail_bounced_mixin msgid "Mail bounced mixin" -msgstr "" +msgstr "E-Posta geri döndü birleşim" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_mail_tracking_email msgid "MailTracking email" -msgstr "" +msgstr "E-Posta Takibi eposta" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_search msgid "MailTracking email search" -msgstr "" +msgstr "E-Posta Takibi eposta arama" #. module: mail_tracking #: model:ir.actions.act_window,name:mail_tracking.action_view_mail_tracking_email msgid "MailTracking emails" -msgstr "" +msgstr "E-Posta Takibi epostalar" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_mail_tracking_event #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_form #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_form msgid "MailTracking event" -msgstr "" +msgstr "E-Posta Takibi etkinlik" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search msgid "MailTracking event search" -msgstr "" +msgstr "E-Posta Takibi etkinlik arama" #. module: mail_tracking #: model:ir.actions.act_window,name:mail_tracking.action_view_mail_tracking_event msgid "MailTracking events" -msgstr "" +msgstr "E-Posta Takibi etkinlikler" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_res_config_settings__mail_tracking_email_max_age_days #: model_terms:ir.ui.view,arch_db:mail_tracking.res_config_settings_view_form msgid "Max age in days of mail tracking email records" -msgstr "" +msgstr "Posta takibi e-posta kayıtlarının maksimum yaşı (gün olarak)" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_mail_message @@ -496,48 +494,48 @@ msgstr "Ay" #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_tree msgid "OS" -msgstr "" +msgstr "İşletim Sistemi" #. module: mail_tracking #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_event__event_type__open #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search msgid "Open" -msgstr "" +msgstr "Açık" #. module: mail_tracking #. odoo-python #: code:addons/mail_tracking/models/mail_message.py:0 #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_email__state__opened msgid "Opened" -msgstr "" +msgstr "Açıldı" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Opened Status Center Checkmark" -msgstr "" +msgstr "Açıldı Durumu Merkez Tik" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Opened Status Left Checkmark" -msgstr "" +msgstr "Açıldı Durumu Sol Tik" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Opened Status Right Checkmark" -msgstr "" +msgstr "Açıldı Durumu Sağ Tik" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__os_family msgid "Operating system family" -msgstr "" +msgstr "İşletim sistemi ailesi" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_mail_mail msgid "Outgoing Mails" -msgstr "" +msgstr "Giden Postalar" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__partner_id @@ -547,63 +545,63 @@ msgstr "İş Ortağı" #. module: mail_tracking #: model:ir.model.fields,help:mail_tracking.field_mail_message__email_to msgid "Raw TO recipients" -msgstr "" +msgstr "Ham TO alıcıları" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__recipient #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_tree #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search msgid "Recipient" -msgstr "" +msgstr "Alıcı" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_search msgid "Recipient Address" -msgstr "" +msgstr "Alıcı Adresi" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__recipient msgid "Recipient email" -msgstr "" +msgstr "Alıcı e-postası" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__recipient_address #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__recipient_address msgid "Recipient email address" -msgstr "" +msgstr "Alıcı e-posta adresi" #. module: mail_tracking #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_email__state__rejected #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_event__event_type__reject msgid "Rejected" -msgstr "" +msgstr "Reddedildi" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/failed_message_review/failed_message_review.xml:0 msgid "Retry" -msgstr "" +msgstr "Yeniden Dene" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__smtp_server msgid "SMTP server" -msgstr "" +msgstr "SMTP sunucusu" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__token msgid "Security Token" -msgstr "" +msgstr "Güvenlik Jetonu" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_search #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_tree msgid "Sender" -msgstr "" +msgstr "Gönderen" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__sender msgid "Sender email" -msgstr "" +msgstr "Gönderen e-postası" #. module: mail_tracking #. odoo-python @@ -619,36 +617,36 @@ msgstr "Gönderildi" #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Sent Status" -msgstr "" +msgstr "Gönderildi Durumu" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/failed_message_review/failed_message_review.xml:0 msgid "Set As Reviewed" -msgstr "" +msgstr "İncelendi Olarak Ayarla" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/failed_message_review/failed_message_review.xml:0 msgid "Set as Reviewed" -msgstr "" +msgstr "İncelendi olarak Ayarla" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_res_company__mail_tracking_show_aliases #: model:ir.model.fields,field_description:mail_tracking.field_res_config_settings__mail_tracking_show_aliases #: model_terms:ir.ui.view,arch_db:mail_tracking.res_config_settings_view_form msgid "Show Aliases in Mail Tracking" -msgstr "" +msgstr "Posta Takibinde Takma Adları Göster" #. module: mail_tracking #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_event__event_type__soft_bounce msgid "Soft bounce" -msgstr "" +msgstr "Geçici geri dönüş" #. module: mail_tracking #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_email__state__soft-bounced msgid "Soft bounced" -msgstr "" +msgstr "Geçici geri döndü" #. module: mail_tracking #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_email__state__spam @@ -666,7 +664,7 @@ msgstr "Durum" #. odoo-python #: code:addons/mail_tracking/models/mail_message.py:0 msgid "Status: %s" -msgstr "" +msgstr "Durum: %s" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__name @@ -678,19 +676,19 @@ msgstr "Konu" #. odoo-javascript #: code:addons/mail_tracking/static/src/components/failed_message/failed_message.xml:0 msgid "Subject:" -msgstr "" +msgstr "Konu:" #. module: mail_tracking #: model:ir.model.fields,help:mail_tracking.field_mail_mail__mail_tracking_needs_action #: model:ir.model.fields,help:mail_tracking.field_mail_message__mail_tracking_needs_action msgid "The message tracking will be considered to filter tracking issues" -msgstr "" +msgstr "İleti takibi, takip sorunlarını filtrelemek için dikkate alınacaktır" #. module: mail_tracking #. odoo-python #: code:addons/mail_tracking/models/mail_message.py:0 msgid "The partner doesn't have a defined email" -msgstr "" +msgstr "Ortak tanımlı bir e-postaya sahip değil" #. module: mail_tracking #. odoo-python @@ -703,6 +701,12 @@ msgid "" "\n" "Records: %(records)s, User: %(user)s" msgstr "" +"İstenen işlem, güvenlik kısıtlamaları nedeniyle tamamlanamıyor. Lütfen " +"sistem yöneticinize başvurun.\n" +"\n" +"(Belge türü: %(desc)s, İşlem: %(operation)s)\n" +"\n" +"Kayıtlar: %(records)s, Kullanıcı: %(user)s" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__time @@ -710,36 +714,36 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_search #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search msgid "Time" -msgstr "" +msgstr "Zaman" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_message__email_to msgid "To" -msgstr "" +msgstr "Alıcı" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/core/message/message.xml:0 msgid "To:" -msgstr "" +msgstr "Alıcı:" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_res_partner__tracking_emails_count #: model:ir.model.fields,field_description:mail_tracking.field_res_users__tracking_emails_count msgid "Tracking Emails Count" -msgstr "" +msgstr "Takip E-postaları Sayısı" #. module: mail_tracking #: model:ir.ui.menu,name:mail_tracking.menu_mail_tracking_email #: model_terms:ir.ui.view,arch_db:mail_tracking.view_partner_form msgid "Tracking emails" -msgstr "" +msgstr "Takip e-postaları" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__tracking_event_ids #: model:ir.ui.menu,name:mail_tracking.menu_mail_tracking_event msgid "Tracking events" -msgstr "" +msgstr "Takip etkinlikleri" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search @@ -755,19 +759,19 @@ msgstr "" #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_email__timestamp #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__timestamp msgid "UTC timestamp" -msgstr "" +msgstr "UTC zaman damgası" #. module: mail_tracking #. odoo-python #: code:addons/mail_tracking/models/mail_message.py:0 msgid "Unknown" -msgstr "" +msgstr "Bilinmeyen" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Unknown Status" -msgstr "" +msgstr "Bilinmeyen Durum" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search @@ -779,57 +783,57 @@ msgstr "Takibi bırak" #: model:ir.model.fields.selection,name:mail_tracking.selection__mail_tracking_event__event_type__unsub #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_search msgid "Unsubscribed" -msgstr "" +msgstr "Takibi bırak" #. module: mail_tracking #: model:ir.model,name:mail_tracking.model_res_users msgid "User" -msgstr "" +msgstr "Kullanıcı" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__user_agent msgid "User Agent" -msgstr "" +msgstr "Kullanıcı Aracısı" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__ip msgid "User IP" -msgstr "" +msgstr "Kullanıcı IP" #. module: mail_tracking #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_email_form #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_tree msgid "User agent" -msgstr "" +msgstr "Kullanıcı aracısı" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__ua_family msgid "User agent family" -msgstr "" +msgstr "Kullanıcı aracısı ailesi" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__ua_type #: model_terms:ir.ui.view,arch_db:mail_tracking.view_mail_tracking_event_search msgid "User agent type" -msgstr "" +msgstr "Kullanıcı aracısı türü" #. module: mail_tracking #: model:ir.model.fields,field_description:mail_tracking.field_mail_tracking_event__user_country_id msgid "User country" -msgstr "" +msgstr "Kullanıcı ülkesi" #. module: mail_tracking #. odoo-python #: code:addons/mail_tracking/models/mail_message.py:0 msgid "Waiting" -msgstr "" +msgstr "Beklemede" #. module: mail_tracking #. odoo-javascript #: code:addons/mail_tracking/static/src/components/message_tracking/message_tracking_status.xml:0 msgid "Waiting Status" -msgstr "" +msgstr "Bekleme Durumu" #~ msgid "Last Modified on" #~ msgstr "Son değişiklik" From 4089bcd55fab904a3532ac732047879d92713660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sabrina=20Mart=C3=ADn?= Date: Mon, 12 Jan 2026 11:54:52 +0000 Subject: [PATCH 36/44] [FIX] mail_post_defer: Fixed behavior of message sending wizard When sending a rich HTML email by using the wizard, Odoo followed a different code path that avoided the auto-defer. Now both systems (direct text-only and wizard with HTML) behave the same. Still, you can use the wizard send dropdown to select a different date. @moduon MT-13187 --- mail_post_defer/__init__.py | 1 + mail_post_defer/tests/test_mail.py | 42 +++++++++++++++++++ mail_post_defer/wizards/__init__.py | 1 + .../wizards/mail_compose_message.py | 19 +++++++++ 4 files changed, 63 insertions(+) create mode 100644 mail_post_defer/wizards/__init__.py create mode 100644 mail_post_defer/wizards/mail_compose_message.py diff --git a/mail_post_defer/__init__.py b/mail_post_defer/__init__.py index cc6b6354a..a0f653930 100644 --- a/mail_post_defer/__init__.py +++ b/mail_post_defer/__init__.py @@ -1,2 +1,3 @@ from . import models +from . import wizards from .hooks import post_init_hook diff --git a/mail_post_defer/tests/test_mail.py b/mail_post_defer/tests/test_mail.py index 02df51785..8d2b0fd69 100644 --- a/mail_post_defer/tests/test_mail.py +++ b/mail_post_defer/tests/test_mail.py @@ -272,6 +272,48 @@ def test_button_access(self): ) +@freezegun.freeze_time("2023-01-02 10:00:00") +class ComposerCase(MailPostDeferCommon): + """Test the composer wizard (HTML editor) behavior.""" + + def test_composer_html_deferred(self): + """Messages sent via HTML editor (composer) are deferred.""" + with self.mock_mail_gateway(): + composer = ( + self.env["mail.compose.message"] + .with_context( + default_composition_mode="comment", + default_model="res.partner", + default_res_ids=f"[{self.partner_portal.id}]", + ) + .create( + { + "subject": "Test Subject", + "body": "

HTML body content

", + "partner_ids": [(6, 0, self.partner_employee.ids)], + } + ) + ) + composer.action_send_mail() + schedules = self.env["mail.message.schedule"].search( + [ + ("mail_message_id.res_id", "=", self.partner_portal.id), + ("mail_message_id.model", "=", "res.partner"), + ("scheduled_datetime", "=", "2023-01-02 10:00:30"), + ] + ) + self.assertEqual(len(schedules), 1) + self.assertNoMail(self.partner_employee) + with freezegun.freeze_time("2023-01-02 10:01:00"): + self.env["mail.message.schedule"]._send_notifications_cron() + self.env["mail.mail"].process_email_queue() + self.assertSentEmail( + self.env.user.partner_id, + self.partner_employee, + body_content="HTML body content", + ) + + @tagged("-at_install", "post_install") @freezegun.freeze_time("2023-01-02 10:00:00") class AutomaticNotificationCase(MailPostDeferCommon): diff --git a/mail_post_defer/wizards/__init__.py b/mail_post_defer/wizards/__init__.py new file mode 100644 index 000000000..b528d997d --- /dev/null +++ b/mail_post_defer/wizards/__init__.py @@ -0,0 +1 @@ +from . import mail_compose_message diff --git a/mail_post_defer/wizards/mail_compose_message.py b/mail_post_defer/wizards/mail_compose_message.py new file mode 100644 index 000000000..ccf3c3431 --- /dev/null +++ b/mail_post_defer/wizards/mail_compose_message.py @@ -0,0 +1,19 @@ +# Copyright 2025 Moduon Team S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). + +from datetime import timedelta + +from odoo import fields, models + + +class MailComposer(models.TransientModel): + _inherit = "mail.compose.message" + + def _prepare_mail_values_rendered(self, res_ids): + result = super()._prepare_mail_values_rendered(res_ids) + for res_id in res_ids: + if not result[res_id].get("scheduled_date"): + result[res_id]["scheduled_date"] = fields.Datetime.now() + timedelta( + seconds=30 + ) + return result From 20b719168b43e590a9b35304ed3a7b1d8a1671c9 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 16 Feb 2026 12:37:30 +0000 Subject: [PATCH 37/44] Translated using Weblate (Italian) Currently translated at 100.0% (5 of 5 strings) Translation: mail-18.0/mail-18.0-mail_restrict_follower_selection Translate-URL: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_restrict_follower_selection/it/ --- mail_restrict_follower_selection/i18n/it.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mail_restrict_follower_selection/i18n/it.po b/mail_restrict_follower_selection/i18n/it.po index 2371e0ca9..24838999e 100644 --- a/mail_restrict_follower_selection/i18n/it.po +++ b/mail_restrict_follower_selection/i18n/it.po @@ -9,7 +9,7 @@ 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: 2025-02-20 11:07+0000\n" +"PO-Revision-Date: 2026-02-16 15:09+0000\n" "Last-Translator: mymage \n" "Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" "Language: it\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.6.2\n" +"X-Generator: Weblate 5.15.2\n" #. module: mail_restrict_follower_selection #: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup @@ -64,7 +64,7 @@ msgstr "Discussione e-mail" #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner_bank__message_partner_ids #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_users__message_partner_ids msgid "Followers (Partners)" -msgstr "" +msgstr "Seguito da (partner)" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite From f6f1c502dde6f9869509f451475db24f99260c49 Mon Sep 17 00:00:00 2001 From: MJD Date: Tue, 17 Feb 2026 10:09:22 +0000 Subject: [PATCH 38/44] Translated using Weblate (German) Currently translated at 100.0% (5 of 5 strings) Translation: mail-18.0/mail-18.0-mail_restrict_follower_selection Translate-URL: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_restrict_follower_selection/de/ --- mail_restrict_follower_selection/i18n/de.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mail_restrict_follower_selection/i18n/de.po b/mail_restrict_follower_selection/i18n/de.po index caba15261..8b93ddd07 100644 --- a/mail_restrict_follower_selection/i18n/de.po +++ b/mail_restrict_follower_selection/i18n/de.po @@ -6,15 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2018-12-15 14:58+0000\n" -"Last-Translator: Maria Sparenberg \n" +"PO-Revision-Date: 2026-02-17 10:10+0000\n" +"Last-Translator: MJD \n" "Language-Team: none\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" -"X-Generator: Weblate 3.3\n" +"X-Generator: Weblate 5.15.2\n" #. module: mail_restrict_follower_selection #: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup @@ -29,7 +29,7 @@ msgstr "Abonnenten des Dokuments" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread msgid "Email Thread" -msgstr "" +msgstr "E-Mail-Thread" #. module: mail_restrict_follower_selection #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_account_account__message_partner_ids @@ -61,7 +61,7 @@ msgstr "" #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_partner_bank__message_partner_ids #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_res_users__message_partner_ids msgid "Followers (Partners)" -msgstr "" +msgstr "Follower (Partner)" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite From 9346b0de5488402668c28e0927977f1a70bbda9f Mon Sep 17 00:00:00 2001 From: MJD Date: Tue, 17 Feb 2026 10:10:41 +0000 Subject: [PATCH 39/44] Added translation using Weblate (German) --- mail_no_user_assign_notification/i18n/de.po | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 mail_no_user_assign_notification/i18n/de.po diff --git a/mail_no_user_assign_notification/i18n/de.po b/mail_no_user_assign_notification/i18n/de.po new file mode 100644 index 000000000..e919778bc --- /dev/null +++ b/mail_no_user_assign_notification/i18n/de.po @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_no_user_assign_notification +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\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" + +#. module: mail_no_user_assign_notification +#: model:ir.model,name:mail_no_user_assign_notification.model_mail_thread +msgid "Email Thread" +msgstr "" From 16f887ba1dfcb7af673af777da17a298161c43b7 Mon Sep 17 00:00:00 2001 From: MJD Date: Tue, 17 Feb 2026 10:11:33 +0000 Subject: [PATCH 40/44] Translated using Weblate (German) Currently translated at 100.0% (1 of 1 strings) Translation: mail-18.0/mail-18.0-mail_no_user_assign_notification Translate-URL: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_no_user_assign_notification/de/ --- mail_no_user_assign_notification/i18n/de.po | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mail_no_user_assign_notification/i18n/de.po b/mail_no_user_assign_notification/i18n/de.po index e919778bc..c1003b38f 100644 --- a/mail_no_user_assign_notification/i18n/de.po +++ b/mail_no_user_assign_notification/i18n/de.po @@ -6,15 +6,17 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2026-02-17 13:09+0000\n" +"Last-Translator: MJD \n" "Language-Team: none\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" +"X-Generator: Weblate 5.15.2\n" #. module: mail_no_user_assign_notification #: model:ir.model,name:mail_no_user_assign_notification.model_mail_thread msgid "Email Thread" -msgstr "" +msgstr "E-Mail-Thread" From 5a468509eb43bf5ac06ed197de5cf3421ef20f58 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 18 Feb 2026 07:42:52 +0000 Subject: [PATCH 41/44] [UPD] Update mail_post_defer.pot --- mail_post_defer/i18n/mail_post_defer.pot | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mail_post_defer/i18n/mail_post_defer.pot b/mail_post_defer/i18n/mail_post_defer.pot index 0fe496c1d..7068819bc 100644 --- a/mail_post_defer/i18n/mail_post_defer.pot +++ b/mail_post_defer/i18n/mail_post_defer.pot @@ -24,6 +24,11 @@ msgstr "" msgid "Email Thread" msgstr "" +#. module: mail_post_defer +#: model:ir.model,name:mail_post_defer.model_mail_compose_message +msgid "Email composition wizard" +msgstr "" + #. module: mail_post_defer #: model:ir.model,name:mail_post_defer.model_mail_message msgid "Message" From 5827afcd6f75506e0d720a669471d2ac026cdafd Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 18 Feb 2026 07:46:47 +0000 Subject: [PATCH 42/44] [BOT] post-merge updates --- README.md | 2 +- mail_post_defer/README.rst | 2 +- mail_post_defer/__manifest__.py | 2 +- mail_post_defer/static/description/index.html | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 296297002..b18c6b203 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ addon | version | maintainers | summary [mail_outbound_static](mail_outbound_static/) | 18.0.1.0.1 | | Allows you to configure the from header for a mail server. [mail_partner_forwarding](mail_partner_forwarding/) | 18.0.1.0.0 | | Forwarding notifications for partners [mail_partner_opt_out](mail_partner_opt_out/) | 18.0.1.0.0 | | Add the partner's email to the blackmailed list -[mail_post_defer](mail_post_defer/) | 18.0.1.0.0 | Yajo | Faster and cancellable outgoing messages +[mail_post_defer](mail_post_defer/) | 18.0.1.0.1 | Yajo | Faster and cancellable outgoing messages [mail_quoted_reply](mail_quoted_reply/) | 18.0.1.0.0 | | Make a reply using a message [mail_restrict_follower_selection](mail_restrict_follower_selection/) | 18.0.1.1.0 | | Define a domain from which followers can be selected [mail_send_confirmation](mail_send_confirmation/) | 18.0.1.0.0 | | Mail Send Confirmation diff --git a/mail_post_defer/README.rst b/mail_post_defer/README.rst index 11a4beaac..8a2634703 100644 --- a/mail_post_defer/README.rst +++ b/mail_post_defer/README.rst @@ -11,7 +11,7 @@ Deferred Message Posting !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:b8388b0cb11cde1fb22cb0f1e2d686f10b048d834cf2b8fa29b3582c98b85853 + !! source digest: sha256:9e2d83f15087adaaf73a0d037632aa9b26388f81a23d8cf43836c5f8b19b0ba1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png diff --git a/mail_post_defer/__manifest__.py b/mail_post_defer/__manifest__.py index 58f8f238e..425f27940 100644 --- a/mail_post_defer/__manifest__.py +++ b/mail_post_defer/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Deferred Message Posting", "summary": "Faster and cancellable outgoing messages", - "version": "18.0.1.0.0", + "version": "18.0.1.0.1", "development_status": "Alpha", "category": "Productivity/Discuss", "website": "https://github.com/OCA/mail", diff --git a/mail_post_defer/static/description/index.html b/mail_post_defer/static/description/index.html index 164f829ae..7d18ac3ea 100644 --- a/mail_post_defer/static/description/index.html +++ b/mail_post_defer/static/description/index.html @@ -372,7 +372,7 @@

Deferred Message Posting

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:b8388b0cb11cde1fb22cb0f1e2d686f10b048d834cf2b8fa29b3582c98b85853 +!! source digest: sha256:9e2d83f15087adaaf73a0d037632aa9b26388f81a23d8cf43836c5f8b19b0ba1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Alpha License: LGPL-3 OCA/mail Translate me on Weblate Try me on Runboat

This module enhances mail threads by using the mail queue by default.

From 1f78df69643869c4ad29bca9419e73943b904df5 Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 18 Feb 2026 07:46:56 +0000 Subject: [PATCH 43/44] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: mail-18.0/mail-18.0-mail_post_defer Translate-URL: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_post_defer/ --- mail_post_defer/i18n/es.po | 12 +++++++++++- mail_post_defer/i18n/it.po | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/mail_post_defer/i18n/es.po b/mail_post_defer/i18n/es.po index 7b7e5b930..fe5c9bb50 100644 --- a/mail_post_defer/i18n/es.po +++ b/mail_post_defer/i18n/es.po @@ -19,7 +19,6 @@ msgstr "" #. module: mail_post_defer #. odoo-python #: code:addons/mail_post_defer/models/mail_thread.py:0 -#, python-format msgid "Cannot modify message; notifications were already sent." msgstr "No se puede modificar el mensaje; ya se han enviado notificaciones." @@ -28,11 +27,22 @@ msgstr "No se puede modificar el mensaje; ya se han enviado notificaciones." msgid "Email Thread" msgstr "Hilo de Correo Electrónico" +#. module: mail_post_defer +#: model:ir.model,name:mail_post_defer.model_mail_compose_message +msgid "Email composition wizard" +msgstr "" + #. module: mail_post_defer #: model:ir.model,name:mail_post_defer.model_mail_message msgid "Message" msgstr "Mensaje" +#. module: mail_post_defer +#. odoo-python +#: code:addons/mail_post_defer/models/mail_thread.py:0 +msgid "Only messages type comment can have their content updated" +msgstr "" + #. module: mail_post_defer #: model:ir.model,name:mail_post_defer.model_mail_message_schedule msgid "Scheduled Messages" diff --git a/mail_post_defer/i18n/it.po b/mail_post_defer/i18n/it.po index fbc405f5c..bae28ce57 100644 --- a/mail_post_defer/i18n/it.po +++ b/mail_post_defer/i18n/it.po @@ -19,7 +19,6 @@ msgstr "" #. module: mail_post_defer #. odoo-python #: code:addons/mail_post_defer/models/mail_thread.py:0 -#, python-format msgid "Cannot modify message; notifications were already sent." msgstr "" "Non si può modificare il messaggio; le notifiche sono già state spedite." @@ -29,11 +28,22 @@ msgstr "" msgid "Email Thread" msgstr "Discussione e-mail" +#. module: mail_post_defer +#: model:ir.model,name:mail_post_defer.model_mail_compose_message +msgid "Email composition wizard" +msgstr "" + #. module: mail_post_defer #: model:ir.model,name:mail_post_defer.model_mail_message msgid "Message" msgstr "Messaggio" +#. module: mail_post_defer +#. odoo-python +#: code:addons/mail_post_defer/models/mail_thread.py:0 +msgid "Only messages type comment can have their content updated" +msgstr "" + #. module: mail_post_defer #: model:ir.model,name:mail_post_defer.model_mail_message_schedule msgid "Scheduled Messages" From f53649106d6c8b81e18d32ba4aeadc4323d65c5f Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 18 Feb 2026 08:33:43 +0000 Subject: [PATCH 44/44] Translated using Weblate (Italian) Currently translated at 100.0% (35 of 35 strings) Translation: mail-18.0/mail-18.0-mail_activity_team Translate-URL: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_activity_team/it/ --- mail_activity_team/i18n/it.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mail_activity_team/i18n/it.po b/mail_activity_team/i18n/it.po index 31f62cd26..59132e078 100644 --- a/mail_activity_team/i18n/it.po +++ b/mail_activity_team/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2025-12-14 21:42+0000\n" +"PO-Revision-Date: 2026-02-18 11:09+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.10.4\n" +"X-Generator: Weblate 5.15.2\n" #. module: mail_activity_team #. odoo-javascript @@ -109,7 +109,7 @@ msgstr "Ultimo aggiornamento di" #. module: mail_activity_team #: model:ir.model.fields,field_description:mail_activity_team.field_mail_activity_team__write_date msgid "Last Updated on" -msgstr "Ultima Modifica il" +msgstr "Ultimo aggiornamento il" #. module: mail_activity_team #: model:ir.model,name:mail_activity_team.model_mail_activity_team