From a5021545d8b89d3dbafa0f5d7a422e059da97a92 Mon Sep 17 00:00:00 2001 From: Pablo Paez Date: Mon, 10 Jan 2022 14:52:32 -0300 Subject: [PATCH 01/22] [ADD] mail_partner_forwarding: New module --- mail_partner_forwarding/README.rst | 75 +++++++++++++++++++ mail_partner_forwarding/__init__.py | 1 + mail_partner_forwarding/__manifest__.py | 17 +++++ mail_partner_forwarding/models/__init__.py | 3 + mail_partner_forwarding/models/mail_thread.py | 43 +++++++++++ mail_partner_forwarding/models/res_partner.py | 12 +++ mail_partner_forwarding/models/res_user.py | 16 ++++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + mail_partner_forwarding/readme/HISTORY.rst | 4 + mail_partner_forwarding/readme/USAGE.rst | 5 ++ mail_partner_forwarding/tests/__init__.py | 1 + .../tests/models/__init__.py | 1 + .../tests/models/fake_order.py | 13 ++++ .../tests/test_mail_forwarding.py | 46 ++++++++++++ .../views/res_partner_views.xml | 16 ++++ .../views/res_user_views.xml | 28 +++++++ 17 files changed, 283 insertions(+) create mode 100644 mail_partner_forwarding/README.rst create mode 100644 mail_partner_forwarding/__init__.py create mode 100644 mail_partner_forwarding/__manifest__.py create mode 100644 mail_partner_forwarding/models/__init__.py create mode 100644 mail_partner_forwarding/models/mail_thread.py create mode 100644 mail_partner_forwarding/models/res_partner.py create mode 100644 mail_partner_forwarding/models/res_user.py create mode 100644 mail_partner_forwarding/readme/CONTRIBUTORS.rst create mode 100644 mail_partner_forwarding/readme/DESCRIPTION.rst create mode 100644 mail_partner_forwarding/readme/HISTORY.rst create mode 100644 mail_partner_forwarding/readme/USAGE.rst create mode 100644 mail_partner_forwarding/tests/__init__.py create mode 100644 mail_partner_forwarding/tests/models/__init__.py create mode 100644 mail_partner_forwarding/tests/models/fake_order.py create mode 100644 mail_partner_forwarding/tests/test_mail_forwarding.py create mode 100644 mail_partner_forwarding/views/res_partner_views.xml create mode 100644 mail_partner_forwarding/views/res_user_views.xml diff --git a/mail_partner_forwarding/README.rst b/mail_partner_forwarding/README.rst new file mode 100644 index 000000000..6e8ebd11c --- /dev/null +++ b/mail_partner_forwarding/README.rst @@ -0,0 +1,75 @@ +======================= +Partner Mail Forwarding +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |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/13.0/mail_debrand + :alt: OCA/social +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/social-13-0/social-13-0-mail_debrand + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/205/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to select a related partner (called "Forwarding Partner") in each partner in order to send all the notifications + to the Forwarding Partner. + + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* AdHoc SA + +Contributors +~~~~~~~~~~~~ + +* Nicolás Mac Rouillon + +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_partner_forwarding/__init__.py b/mail_partner_forwarding/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/mail_partner_forwarding/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/mail_partner_forwarding/__manifest__.py b/mail_partner_forwarding/__manifest__.py new file mode 100644 index 000000000..4f1a52c03 --- /dev/null +++ b/mail_partner_forwarding/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2022 AdHoc SA - Pablo Paez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Partner Mail Forwarding", + "summary": "Forwarding notifications for partners", + "version": "13.0.1.0.0", + "category": "Social Network", + "website": "https://github.com/OCA/social", + "author": "ADHOC SA, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "depends": ["mail"], + "data": ["views/res_user_views.xml", "views/res_partner_views.xml"], + "development_status": "Production/Stable", + "maintainers": [], +} diff --git a/mail_partner_forwarding/models/__init__.py b/mail_partner_forwarding/models/__init__.py new file mode 100644 index 000000000..8df12c7a1 --- /dev/null +++ b/mail_partner_forwarding/models/__init__.py @@ -0,0 +1,3 @@ +from . import res_partner +from . import res_user +from . import mail_thread diff --git a/mail_partner_forwarding/models/mail_thread.py b/mail_partner_forwarding/models/mail_thread.py new file mode 100644 index 000000000..e3bd699a0 --- /dev/null +++ b/mail_partner_forwarding/models/mail_thread.py @@ -0,0 +1,43 @@ +from odoo import models + + +class MailThread(models.AbstractModel): + _inherit = "mail.thread" + + def _notify_compute_recipients(self, message, msg_vals): + """ Inherit this method to add in the list of partners to be notify + the forwarding_partner_id of any partners in the list """ + recipient_data = super()._notify_compute_recipients(message, msg_vals) + if not recipient_data.get("partners", False): + return recipient_data + partner_dict = {x.get("id"): x for x in recipient_data.get("partners")} + forwarded_partner_ids = [] + # for each partner being notified we check if it has a + # forwarding_partner_id configured that is not being notified yet + for partner in ( + self.env["res.partner"] + .sudo() + .with_context(prefetch_fields=False) + .browse(partner_dict.keys()) + ): + if ( + partner.forwarding_partner_id + and partner.forwarding_partner_id.id not in partner_dict.keys() + and partner.forwarding_partner_id.id not in forwarded_partner_ids + ): + forwarded_partner_ids.append(partner.forwarding_partner_id.id) + data = partner_dict[partner.id].copy() + notif = ( + partner.forwarding_partner_id.user_ids + and partner.forwarding_partner_id.user_ids[0].notification_type + or "email" + ) + data.update( + { + "id": partner.forwarding_partner_id.id, + "share": partner.partner_share, + "notif": notif, + } + ) + recipient_data["partners"].append(data) + return recipient_data diff --git a/mail_partner_forwarding/models/res_partner.py b/mail_partner_forwarding/models/res_partner.py new file mode 100644 index 000000000..dd8881fd1 --- /dev/null +++ b/mail_partner_forwarding/models/res_partner.py @@ -0,0 +1,12 @@ +from odoo import fields, models + + +class ResPartner(models.Model): + _inherit = "res.partner" + + forwarding_partner_id = fields.Many2one( + "res.partner", + string="Forwarding Partner", + help="Messages will be forwarded only for partners that are followers but no " + "partners being notify because they belong to channel that is following the thread", + ) diff --git a/mail_partner_forwarding/models/res_user.py b/mail_partner_forwarding/models/res_user.py new file mode 100644 index 000000000..8ba5bb7ee --- /dev/null +++ b/mail_partner_forwarding/models/res_user.py @@ -0,0 +1,16 @@ +from odoo import fields, models + + +class ResUsers(models.Model): + _inherit = "res.users" + + forwarding_partner_id = fields.Many2one( + related="partner_id.forwarding_partner_id", readonly=False + ) + + def __init__(self, pool, cr): + super().__init__(pool, cr) + self.SELF_WRITEABLE_FIELDS = list(self.SELF_WRITEABLE_FIELDS) + self.SELF_WRITEABLE_FIELDS.append("forwarding_partner_id") + self.SELF_READABLE_FIELDS = list(self.SELF_READABLE_FIELDS) + self.SELF_READABLE_FIELDS.append("forwarding_partner_id") diff --git a/mail_partner_forwarding/readme/CONTRIBUTORS.rst b/mail_partner_forwarding/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..e3895da9d --- /dev/null +++ b/mail_partner_forwarding/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Nicolás Mac Rouillon diff --git a/mail_partner_forwarding/readme/DESCRIPTION.rst b/mail_partner_forwarding/readme/DESCRIPTION.rst new file mode 100644 index 000000000..9938e47b8 --- /dev/null +++ b/mail_partner_forwarding/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module allows to select a related user (called "Forwarding partner") in each partner in order to send all the notifications to the Forwarding partner. diff --git a/mail_partner_forwarding/readme/HISTORY.rst b/mail_partner_forwarding/readme/HISTORY.rst new file mode 100644 index 000000000..edcc2dae4 --- /dev/null +++ b/mail_partner_forwarding/readme/HISTORY.rst @@ -0,0 +1,4 @@ +13.0.1.0.0 (2022-01-03) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [NEW] Module in v13. diff --git a/mail_partner_forwarding/readme/USAGE.rst b/mail_partner_forwarding/readme/USAGE.rst new file mode 100644 index 000000000..031e5a1e4 --- /dev/null +++ b/mail_partner_forwarding/readme/USAGE.rst @@ -0,0 +1,5 @@ +To use this module, you need to: + +* Install it. +* Set a Forwarding partner in your partner. +* Your Forwarding partner also will be notify of your notifications diff --git a/mail_partner_forwarding/tests/__init__.py b/mail_partner_forwarding/tests/__init__.py new file mode 100644 index 000000000..99035941c --- /dev/null +++ b/mail_partner_forwarding/tests/__init__.py @@ -0,0 +1 @@ +from . import test_mail_forwarding diff --git a/mail_partner_forwarding/tests/models/__init__.py b/mail_partner_forwarding/tests/models/__init__.py new file mode 100644 index 000000000..4327a4b6e --- /dev/null +++ b/mail_partner_forwarding/tests/models/__init__.py @@ -0,0 +1 @@ +from . import fake_order diff --git a/mail_partner_forwarding/tests/models/fake_order.py b/mail_partner_forwarding/tests/models/fake_order.py new file mode 100644 index 000000000..b14a40f17 --- /dev/null +++ b/mail_partner_forwarding/tests/models/fake_order.py @@ -0,0 +1,13 @@ +# Copyright 2021 Camptocamp (http://www.camptocamp.com). +# @author Iván Todorovich +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FakeOrder(models.Model): + _name = "fake.order" + _inherit = "mail.thread" + _description = "Fake sale.order like model" + + partner_id = fields.Many2one("res.partner", required=True) diff --git a/mail_partner_forwarding/tests/test_mail_forwarding.py b/mail_partner_forwarding/tests/test_mail_forwarding.py new file mode 100644 index 000000000..7556acd4f --- /dev/null +++ b/mail_partner_forwarding/tests/test_mail_forwarding.py @@ -0,0 +1,46 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo_test_helper import FakeModelLoader + +from odoo import _ +from odoo.tests.common import SavepointCase, tagged + + +@tagged("post_install", "-at_install") +class TestMailForwarding(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + # Setup env + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + # Load fake order model + cls.loader = FakeModelLoader(cls.env, cls.__module__) + cls.loader.backup_registry() + from .models.fake_order import FakeOrder + + cls.loader.update_registry((FakeOrder,)) + cls.fake_order_model = cls.env["ir.model"].search( + [("model", "=", "fake.order")] + ) + # Partner To forward + cls.partner_1 = cls.env.ref("base.user_demo").partner_id + cls.partner_2 = cls.env.ref("base.user_admin").partner_id + + # Configurate in the user setting the user to be forwarding + cls.partner_2.forwarding_partner_id = cls.partner_1 + # Empty fake.order + cls.order = cls.env["fake.order"].create({"partner_id": cls.partner_2.id}) + + @classmethod + def tearDownClass(cls): + cls.loader.restore_registry() + return super().tearDownClass() + + def test_message_post_forwarding(self): + """Test forwarding when send a message for the user""" + self.order.message_post( + body=_("Test"), + message_type="comment", + subtype="mail.mt_comment", + partner_ids=[self.partner_2.id], + ) diff --git a/mail_partner_forwarding/views/res_partner_views.xml b/mail_partner_forwarding/views/res_partner_views.xml new file mode 100644 index 000000000..3fd5bdae4 --- /dev/null +++ b/mail_partner_forwarding/views/res_partner_views.xml @@ -0,0 +1,16 @@ + + + + + res.partner.form.forwarding + res.partner + + + + + + + + + diff --git a/mail_partner_forwarding/views/res_user_views.xml b/mail_partner_forwarding/views/res_user_views.xml new file mode 100644 index 000000000..a131bda85 --- /dev/null +++ b/mail_partner_forwarding/views/res_user_views.xml @@ -0,0 +1,28 @@ + + + + + res.users.form.user.forwarding + res.users + + + + + + + + + res.users.form.user.forwarding.preferences + res.users + + + + + + + + + From d19fcba0eb59b78e858c5cd4f44baf71c7599da3 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 30 Dec 2022 15:15:56 +0000 Subject: [PATCH 02/22] [UPD] Update mail_partner_forwarding.pot --- .../i18n/mail_partner_forwarding.pot | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 mail_partner_forwarding/i18n/mail_partner_forwarding.pot diff --git a/mail_partner_forwarding/i18n/mail_partner_forwarding.pot b/mail_partner_forwarding/i18n/mail_partner_forwarding.pot new file mode 100644 index 000000000..fb07c2d2f --- /dev/null +++ b/mail_partner_forwarding/i18n/mail_partner_forwarding.pot @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_partner_forwarding +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.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_partner_forwarding +#: model:ir.model,name:mail_partner_forwarding.model_res_partner +msgid "Contact" +msgstr "" + +#. module: mail_partner_forwarding +#: model:ir.model,name:mail_partner_forwarding.model_mail_thread +msgid "Email Thread" +msgstr "" + +#. module: mail_partner_forwarding +#: model:ir.model.fields,field_description:mail_partner_forwarding.field_res_partner__forwarding_partner_id +#: model:ir.model.fields,field_description:mail_partner_forwarding.field_res_users__forwarding_partner_id +msgid "Forwarding Partner" +msgstr "" + +#. module: mail_partner_forwarding +#: model:ir.model.fields,help:mail_partner_forwarding.field_res_partner__forwarding_partner_id +#: model:ir.model.fields,help:mail_partner_forwarding.field_res_users__forwarding_partner_id +msgid "" +"Messages will be forwarded only for partners that are followers but no " +"partners being notify because they belong to channel that is following the " +"thread" +msgstr "" + +#. module: mail_partner_forwarding +#: code:addons/mail_partner_forwarding/tests/test_mail_forwarding.py:0 +#, python-format +msgid "Test" +msgstr "" + +#. module: mail_partner_forwarding +#: model:ir.model,name:mail_partner_forwarding.model_res_users +msgid "Users" +msgstr "" From 25932a272c83b4121d0ea92dce02f8b577cbe478 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 30 Dec 2022 15:42:03 +0000 Subject: [PATCH 03/22] [UPD] README.rst --- mail_partner_forwarding/README.rst | 31 +- .../static/description/index.html | 442 ++++++++++++++++++ 2 files changed, 465 insertions(+), 8 deletions(-) create mode 100644 mail_partner_forwarding/static/description/index.html diff --git a/mail_partner_forwarding/README.rst b/mail_partner_forwarding/README.rst index 6e8ebd11c..fdcd6b4ec 100644 --- a/mail_partner_forwarding/README.rst +++ b/mail_partner_forwarding/README.rst @@ -14,10 +14,10 @@ Partner Mail Forwarding :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github - :target: https://github.com/OCA/social/tree/13.0/mail_debrand + :target: https://github.com/OCA/social/tree/13.0/mail_partner_forwarding :alt: OCA/social .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/social-13-0/social-13-0-mail_debrand + :target: https://translation.odoo-community.org/projects/social-13-0/social-13-0-mail_partner_forwarding :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png :target: https://runbot.odoo-community.org/runbot/205/13.0 @@ -25,22 +25,37 @@ Partner Mail Forwarding |badge1| |badge2| |badge3| |badge4| |badge5| -This module allows to select a related partner (called "Forwarding Partner") in each partner in order to send all the notifications - to the Forwarding Partner. - +This module allows to select a related user (called "Forwarding partner") in each partner in order to send all the notifications to the Forwarding partner. **Table of contents** .. contents:: :local: +Usage +===== + +To use this module, you need to: + +* Install it. +* Set a Forwarding partner in your partner. +* Your Forwarding partner also will be notify of your notifications + +Changelog +========= + +13.0.1.0.0 (2022-01-03) +~~~~~~~~~~~~~~~~~~~~~~~ + +* [NEW] Module in v13. + Bug Tracker =========== Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -50,7 +65,7 @@ Credits Authors ~~~~~~~ -* AdHoc SA +* ADHOC SA Contributors ~~~~~~~~~~~~ @@ -70,6 +85,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_partner_forwarding/static/description/index.html b/mail_partner_forwarding/static/description/index.html new file mode 100644 index 000000000..6cd6d4aa0 --- /dev/null +++ b/mail_partner_forwarding/static/description/index.html @@ -0,0 +1,442 @@ + + + + + + +Partner Mail Forwarding + + + +
+

Partner Mail Forwarding

+ + +

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

+

This module allows to select a related user (called “Forwarding partner”) in each partner in order to send all the notifications to the Forwarding partner.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  • Install it.
  • +
  • Set a Forwarding partner in your partner.
  • +
  • Your Forwarding partner also will be notify of your notifications
  • +
+
+
+

Changelog

+
+

13.0.1.0.0 (2022-01-03)

+
    +
  • [NEW] Module in v13.
  • +
+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ADHOC SA
  • +
+
+
+

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.

+
+
+
+ + From 80de134fbbf17839ae19b47b982398201ac476ab Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 30 Dec 2022 15:42:03 +0000 Subject: [PATCH 04/22] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mail_partner_forwarding/static/description/icon.png diff --git a/mail_partner_forwarding/static/description/icon.png b/mail_partner_forwarding/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 From 7f320e8d9543dba4fbf431ee6eab1c2a0e0b0b00 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 16:58:35 +0000 Subject: [PATCH 05/22] [UPD] README.rst --- mail_partner_forwarding/README.rst | 15 +++--- .../static/description/index.html | 48 ++++++++++--------- 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/mail_partner_forwarding/README.rst b/mail_partner_forwarding/README.rst index fdcd6b4ec..ad992ff73 100644 --- a/mail_partner_forwarding/README.rst +++ b/mail_partner_forwarding/README.rst @@ -2,10 +2,13 @@ Partner Mail Forwarding ======================= -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ceb1f69084e860b2458a7ae6b68dd0d1aa4e111b91273b4210e1b6e33e270f44 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Partner Mail Forwarding .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/social-13-0/social-13-0-mail_partner_forwarding :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/205/13.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/social&target_branch=13.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module allows to select a related user (called "Forwarding partner") in each partner in order to send all the notifications to the Forwarding partner. @@ -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 smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/mail_partner_forwarding/static/description/index.html b/mail_partner_forwarding/static/description/index.html index 6cd6d4aa0..1eee9c1a4 100644 --- a/mail_partner_forwarding/static/description/index.html +++ b/mail_partner_forwarding/static/description/index.html @@ -1,20 +1,20 @@ - + - + Partner Mail Forwarding -
-

Partner Mail Forwarding

+
+ + +Odoo Community Association + +
+

Partner Mail Forwarding

-

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

+

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

This module allows to select a related user (called “Forwarding partner”) in each partner in order to send all the notifications to the Forwarding partner.

@@ -391,7 +396,7 @@

Partner Mail Forwarding

-

Usage

+

Usage

To use this module, you need to:

  • Install it.
  • @@ -400,38 +405,38 @@

    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 -feedback.

+feedback.

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

-

Credits

+

Credits

-

Authors

+

Authors

  • ADHOC SA
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -439,10 +444,11 @@

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/mail 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_partner_forwarding/tests/test_mail_forwarding.py b/mail_partner_forwarding/tests/test_mail_forwarding.py index 55a4d66af..1e0ca86eb 100644 --- a/mail_partner_forwarding/tests/test_mail_forwarding.py +++ b/mail_partner_forwarding/tests/test_mail_forwarding.py @@ -1,8 +1,6 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo_test_helper import FakeModelLoader - -from odoo import _ +from odoo.orm.model_classes import add_to_registry from odoo.tests.common import TransactionCase, tagged @@ -11,35 +9,44 @@ class TestMailForwarding(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() - # Setup env cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) - # Load fake order model - cls.loader = FakeModelLoader(cls.env, cls.__module__) - cls.loader.backup_registry() + from .models.fake_order import FakeOrder - cls.loader.update_registry((FakeOrder,)) + add_to_registry(cls.registry, FakeOrder) + + test_models = ["fake.order"] + cls.registry._setup_models__(cls.env.cr, test_models) + cls.registry.init_models(cls.env.cr, test_models, {"models_to_check": True}) + + for model_name in test_models: + cls.addClassCleanup(cls.registry.__delitem__, model_name) + cls.fake_order_model = cls.env["ir.model"].search( [("model", "=", "fake.order")] ) - # Partner To forward - cls.partner_1 = cls.env.ref("base.user_demo").partner_id - cls.partner_2 = cls.env.ref("base.user_admin").partner_id - # Configurate in the user setting the user to be forwarding + cls.partner_1 = cls.env["res.partner"].create( + { + "name": "Test Partner 1 (Forwarding)", + "email": "partner1@test.example.com", + } + ) + cls.partner_2 = cls.env["res.partner"].create( + { + "name": "Test Partner 2 (Main)", + "email": "partner2@test.example.com", + } + ) + cls.partner_2.forwarding_partner_id = cls.partner_1 - # Empty fake.order - cls.order = cls.env["fake.order"].create({"partner_id": cls.partner_2.id}) - @classmethod - def tearDownClass(cls): - cls.loader.restore_registry() - return super().tearDownClass() + cls.order = cls.env["fake.order"].create({"partner_id": cls.partner_2.id}) def test_message_post_forwarding(self): """Test forwarding when send a message for the user""" self.order.message_post( - body=_("Test"), + body=self.env._("Test"), message_type="comment", subtype_id=self.env.ref("mail.mt_comment").id, partner_ids=[self.partner_2.id],