From 423ec25e9705c81fccc9cf35b3083ff8d57cfc17 Mon Sep 17 00:00:00 2001
From: Jordi Ballester
Date: Thu, 22 Apr 2021 17:40:58 +0200
Subject: [PATCH 1/9] [13.0][add][mail_partner_opt_out]
---
mail_partner_opt_out/__init__.py | 1 +
mail_partner_opt_out/__manifest__.py | 15 ++++++
mail_partner_opt_out/models/__init__.py | 1 +
mail_partner_opt_out/models/res_partner.py | 51 +++++++++++++++++++
mail_partner_opt_out/readme/CONTRIBUTORS.rst | 3 ++
mail_partner_opt_out/readme/DESCRIPTION.rst | 3 ++
mail_partner_opt_out/readme/USAGE.rst | 6 +++
.../views/res_partner_views.xml | 12 +++++
8 files changed, 92 insertions(+)
create mode 100644 mail_partner_opt_out/__init__.py
create mode 100644 mail_partner_opt_out/__manifest__.py
create mode 100644 mail_partner_opt_out/models/__init__.py
create mode 100644 mail_partner_opt_out/models/res_partner.py
create mode 100644 mail_partner_opt_out/readme/CONTRIBUTORS.rst
create mode 100644 mail_partner_opt_out/readme/DESCRIPTION.rst
create mode 100644 mail_partner_opt_out/readme/USAGE.rst
create mode 100644 mail_partner_opt_out/views/res_partner_views.xml
diff --git a/mail_partner_opt_out/__init__.py b/mail_partner_opt_out/__init__.py
new file mode 100644
index 0000000000..0650744f6b
--- /dev/null
+++ b/mail_partner_opt_out/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/mail_partner_opt_out/__manifest__.py b/mail_partner_opt_out/__manifest__.py
new file mode 100644
index 0000000000..e264320e74
--- /dev/null
+++ b/mail_partner_opt_out/__manifest__.py
@@ -0,0 +1,15 @@
+# Copyright 2021 ForgeFlow S.L.
+# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
+{
+ "name": "Mail Partner Opt Out",
+ "summary": "Add the partner's email to the blackmailed list",
+ "version": "13.0.1.0.0",
+ "development_status": "Beta",
+ "category": "Social Network",
+ "website": "https://github.com/OCA/social",
+ "author": "ForgeFlow, Odoo Community Association (OCA)",
+ "license": "LGPL-3",
+ "installable": True,
+ "data": ["views/res_partner_views.xml"],
+ "depends": ["mail"],
+}
diff --git a/mail_partner_opt_out/models/__init__.py b/mail_partner_opt_out/models/__init__.py
new file mode 100644
index 0000000000..91fed54d40
--- /dev/null
+++ b/mail_partner_opt_out/models/__init__.py
@@ -0,0 +1 @@
+from . import res_partner
diff --git a/mail_partner_opt_out/models/res_partner.py b/mail_partner_opt_out/models/res_partner.py
new file mode 100644
index 0000000000..1dcb24392d
--- /dev/null
+++ b/mail_partner_opt_out/models/res_partner.py
@@ -0,0 +1,51 @@
+# Copyright 2021 ForgeFlow S.L.
+# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
+from odoo import _, fields, models
+
+
+class ResPartner(models.Model):
+ _inherit = "res.partner"
+
+ opt_out = fields.Boolean(
+ string="Opt Out",
+ compute="_compute_opt_out",
+ inverse="_inverse_opt_out",
+ search="_search_opt_out",
+ help="Setting this checkbox will add the partner's email to a "
+ "blacklist so that this email won't be considered in mailings.",
+ )
+
+ def _compute_opt_out(self):
+ blacklist = (
+ self.env["mail.blacklist"]
+ .sudo()
+ .search([("email", "in", self.mapped("email"))])
+ )
+ blacklisted_emails = blacklist.mapped("email")
+ for rec in self:
+ if rec.email in blacklisted_emails:
+ rec.opt_out = True
+ else:
+ rec.opt_out = False
+
+ def _inverse_opt_out(self):
+ for rec in self:
+ if rec.opt_out and rec.email:
+ self.env["mail.blacklist"].sudo()._add(self.email)
+ elif not rec.opt_out and rec.email:
+ self.env["mail.blacklist"].sudo()._remove(self.email)
+
+ def _is_unsupported_search_operator(self, operator):
+ return operator not in ["=", "!="]
+
+ def _search_opt_out(self, operator, value):
+ if self._is_unsupported_search_operator(operator):
+ raise ValueError(_("Unsupported search operator"))
+ blacklisted_emails = (
+ self.env["mail.blacklist"].sudo().search([]).mapped("email")
+ )
+ if (operator == "=" and value) or (operator == "!=" and not value):
+ search_operator = "in"
+ else:
+ search_operator = "not in"
+ return [("email", search_operator, blacklisted_emails)]
diff --git a/mail_partner_opt_out/readme/CONTRIBUTORS.rst b/mail_partner_opt_out/readme/CONTRIBUTORS.rst
new file mode 100644
index 0000000000..65caa64fa2
--- /dev/null
+++ b/mail_partner_opt_out/readme/CONTRIBUTORS.rst
@@ -0,0 +1,3 @@
+* ForgeFlow, S.L. (contact@forgeflow.com)
+
+ * Jordi Ballester Alomar (jordi.ballester@forgeflow.com)
diff --git a/mail_partner_opt_out/readme/DESCRIPTION.rst b/mail_partner_opt_out/readme/DESCRIPTION.rst
new file mode 100644
index 0000000000..e01da34b3e
--- /dev/null
+++ b/mail_partner_opt_out/readme/DESCRIPTION.rst
@@ -0,0 +1,3 @@
+This module adds the capability for a user to add a partner's email address
+to the blackmail list so that she will not receive any emails from mass
+mailing campaigns.
diff --git a/mail_partner_opt_out/readme/USAGE.rst b/mail_partner_opt_out/readme/USAGE.rst
new file mode 100644
index 0000000000..eb1cca8075
--- /dev/null
+++ b/mail_partner_opt_out/readme/USAGE.rst
@@ -0,0 +1,6 @@
+Go to a partner. Next to the partner's email address you will see the
+checkbox 'Opt Out'. Once you press it the partner's email address will be
+blacklisted and the checkbox will be set. If you uncheck if the email address
+will be removed from the blacklist.
+
+You can also search for partners using the opt out as search criteria.
diff --git a/mail_partner_opt_out/views/res_partner_views.xml b/mail_partner_opt_out/views/res_partner_views.xml
new file mode 100644
index 0000000000..8d91b08553
--- /dev/null
+++ b/mail_partner_opt_out/views/res_partner_views.xml
@@ -0,0 +1,12 @@
+
+
+
+ res.partner
+
+
+
+
+
+
+
+
From d637b2f6e57e8626a87a58c2672ddbbac3d923b7 Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Tue, 27 Apr 2021 22:02:39 +0000
Subject: [PATCH 2/9] [UPD] Update mail_partner_opt_out.pot
---
.../i18n/mail_partner_opt_out.pot | 40 +++++++++++++++++++
1 file changed, 40 insertions(+)
create mode 100644 mail_partner_opt_out/i18n/mail_partner_opt_out.pot
diff --git a/mail_partner_opt_out/i18n/mail_partner_opt_out.pot b/mail_partner_opt_out/i18n/mail_partner_opt_out.pot
new file mode 100644
index 0000000000..2f7fe8faeb
--- /dev/null
+++ b/mail_partner_opt_out/i18n/mail_partner_opt_out.pot
@@ -0,0 +1,40 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * mail_partner_opt_out
+#
+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_opt_out
+#: model:ir.model,name:mail_partner_opt_out.model_res_partner
+msgid "Contact"
+msgstr ""
+
+#. module: mail_partner_opt_out
+#: model:ir.model.fields,field_description:mail_partner_opt_out.field_res_partner__opt_out
+#: model:ir.model.fields,field_description:mail_partner_opt_out.field_res_users__opt_out
+#: model_terms:ir.ui.view,arch_db:mail_partner_opt_out.view_partner_form
+msgid "Opt Out"
+msgstr ""
+
+#. module: mail_partner_opt_out
+#: model:ir.model.fields,help:mail_partner_opt_out.field_res_partner__opt_out
+#: model:ir.model.fields,help:mail_partner_opt_out.field_res_users__opt_out
+msgid ""
+"Setting this checkbox will add the partner's email to a blacklist so that "
+"this email won't be considered in mailings."
+msgstr ""
+
+#. module: mail_partner_opt_out
+#: code:addons/mail_partner_opt_out/models/res_partner.py:0
+#, python-format
+msgid "Unsupported search operator"
+msgstr ""
From e3b952eb1992371fd5c85217722c74435a40e2b1 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Tue, 27 Apr 2021 22:08:28 +0000
Subject: [PATCH 3/9] [UPD] README.rst
---
mail_partner_opt_out/README.rst | 87 ++++
.../static/description/index.html | 436 ++++++++++++++++++
2 files changed, 523 insertions(+)
create mode 100644 mail_partner_opt_out/README.rst
create mode 100644 mail_partner_opt_out/static/description/index.html
diff --git a/mail_partner_opt_out/README.rst b/mail_partner_opt_out/README.rst
new file mode 100644
index 0000000000..61e90e11f1
--- /dev/null
+++ b/mail_partner_opt_out/README.rst
@@ -0,0 +1,87 @@
+====================
+Mail Partner Opt Out
+====================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
+ :alt: License: LGPL-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_partner_opt_out
+ :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_partner_opt_out
+ :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 adds the capability for a user to add a partner's email address
+to the blackmail list so that she will not receive any emails from mass
+mailing campaigns.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Usage
+=====
+
+Go to a partner. Next to the partner's email address you will see the
+checkbox 'Opt Out'. Once you press it the partner's email address will be
+blacklisted and the checkbox will be set. If you uncheck if the email address
+will be removed from the blacklist.
+
+You can also search for partners using the opt out as search criteria.
+
+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
+~~~~~~~
+
+* ForgeFlow
+
+Contributors
+~~~~~~~~~~~~
+
+* ForgeFlow, S.L. (contact@forgeflow.com)
+
+ * Jordi Ballester Alomar (jordi.ballester@forgeflow.com)
+
+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_opt_out/static/description/index.html b/mail_partner_opt_out/static/description/index.html
new file mode 100644
index 0000000000..64861235a3
--- /dev/null
+++ b/mail_partner_opt_out/static/description/index.html
@@ -0,0 +1,436 @@
+
+
+
+
+
+
+Mail Partner Opt Out
+
+
+
+
+
Mail Partner Opt Out
+
+
+
+
This module adds the capability for a user to add a partner’s email address
+to the blackmail list so that she will not receive any emails from mass
+mailing campaigns.
Go to a partner. Next to the partner’s email address you will see the
+checkbox ‘Opt Out’. Once you press it the partner’s email address will be
+blacklisted and the checkbox will be set. If you uncheck if the email address
+will be removed from the blacklist.
+
You can also search for partners using the opt out as search criteria.
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.
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.
+
+
From 54620724cf8d3bba0516887ef628cdd34357ed8b Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Tue, 27 Apr 2021 22:08:29 +0000
Subject: [PATCH 4/9] [ADD] icon.png
---
mail_partner_opt_out/static/description/icon.png | Bin 0 -> 9455 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 mail_partner_opt_out/static/description/icon.png
diff --git a/mail_partner_opt_out/static/description/icon.png b/mail_partner_opt_out/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 6d43cd0cf5cd49613109ebe9e5bfb2947b2b7db4 Mon Sep 17 00:00:00 2001
From: GuillemCForgeFlow
Date: Thu, 9 Dec 2021 12:39:48 +0100
Subject: [PATCH 5/9] [14.0][MIG]mail_partner_opt_out: Migration to 14.0
---
mail_partner_opt_out/__manifest__.py | 2 +-
mail_partner_opt_out/models/__init__.py | 2 +-
.../models/mail_thread_blacklist.py | 10 ++++
mail_partner_opt_out/models/res_partner.py | 51 -------------------
mail_partner_opt_out/readme/DESCRIPTION.rst | 2 +-
mail_partner_opt_out/readme/USAGE.rst | 9 ++--
.../views/res_partner_views.xml | 12 ++++-
7 files changed, 28 insertions(+), 60 deletions(-)
create mode 100644 mail_partner_opt_out/models/mail_thread_blacklist.py
delete mode 100644 mail_partner_opt_out/models/res_partner.py
diff --git a/mail_partner_opt_out/__manifest__.py b/mail_partner_opt_out/__manifest__.py
index e264320e74..436be456e7 100644
--- a/mail_partner_opt_out/__manifest__.py
+++ b/mail_partner_opt_out/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Mail Partner Opt Out",
"summary": "Add the partner's email to the blackmailed list",
- "version": "13.0.1.0.0",
+ "version": "14.0.1.0.0",
"development_status": "Beta",
"category": "Social Network",
"website": "https://github.com/OCA/social",
diff --git a/mail_partner_opt_out/models/__init__.py b/mail_partner_opt_out/models/__init__.py
index 91fed54d40..32620734ac 100644
--- a/mail_partner_opt_out/models/__init__.py
+++ b/mail_partner_opt_out/models/__init__.py
@@ -1 +1 @@
-from . import res_partner
+from . import mail_thread_blacklist
diff --git a/mail_partner_opt_out/models/mail_thread_blacklist.py b/mail_partner_opt_out/models/mail_thread_blacklist.py
new file mode 100644
index 0000000000..736a1e0b01
--- /dev/null
+++ b/mail_partner_opt_out/models/mail_thread_blacklist.py
@@ -0,0 +1,10 @@
+from odoo import models
+
+
+class MailBlackListMixin(models.AbstractModel):
+ _inherit = "mail.thread.blacklist"
+
+ def mail_blacklist_add(self):
+ for rec in self:
+ if not rec.is_blacklisted and rec.email:
+ self.env["mail.blacklist"].sudo()._add(self.email)
diff --git a/mail_partner_opt_out/models/res_partner.py b/mail_partner_opt_out/models/res_partner.py
deleted file mode 100644
index 1dcb24392d..0000000000
--- a/mail_partner_opt_out/models/res_partner.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 2021 ForgeFlow S.L.
-# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
-from odoo import _, fields, models
-
-
-class ResPartner(models.Model):
- _inherit = "res.partner"
-
- opt_out = fields.Boolean(
- string="Opt Out",
- compute="_compute_opt_out",
- inverse="_inverse_opt_out",
- search="_search_opt_out",
- help="Setting this checkbox will add the partner's email to a "
- "blacklist so that this email won't be considered in mailings.",
- )
-
- def _compute_opt_out(self):
- blacklist = (
- self.env["mail.blacklist"]
- .sudo()
- .search([("email", "in", self.mapped("email"))])
- )
- blacklisted_emails = blacklist.mapped("email")
- for rec in self:
- if rec.email in blacklisted_emails:
- rec.opt_out = True
- else:
- rec.opt_out = False
-
- def _inverse_opt_out(self):
- for rec in self:
- if rec.opt_out and rec.email:
- self.env["mail.blacklist"].sudo()._add(self.email)
- elif not rec.opt_out and rec.email:
- self.env["mail.blacklist"].sudo()._remove(self.email)
-
- def _is_unsupported_search_operator(self, operator):
- return operator not in ["=", "!="]
-
- def _search_opt_out(self, operator, value):
- if self._is_unsupported_search_operator(operator):
- raise ValueError(_("Unsupported search operator"))
- blacklisted_emails = (
- self.env["mail.blacklist"].sudo().search([]).mapped("email")
- )
- if (operator == "=" and value) or (operator == "!=" and not value):
- search_operator = "in"
- else:
- search_operator = "not in"
- return [("email", search_operator, blacklisted_emails)]
diff --git a/mail_partner_opt_out/readme/DESCRIPTION.rst b/mail_partner_opt_out/readme/DESCRIPTION.rst
index e01da34b3e..175a0155ae 100644
--- a/mail_partner_opt_out/readme/DESCRIPTION.rst
+++ b/mail_partner_opt_out/readme/DESCRIPTION.rst
@@ -1,3 +1,3 @@
This module adds the capability for a user to add a partner's email address
to the blackmail list so that she will not receive any emails from mass
-mailing campaigns.
+mailing campaigns
diff --git a/mail_partner_opt_out/readme/USAGE.rst b/mail_partner_opt_out/readme/USAGE.rst
index eb1cca8075..f576e53971 100644
--- a/mail_partner_opt_out/readme/USAGE.rst
+++ b/mail_partner_opt_out/readme/USAGE.rst
@@ -1,6 +1,7 @@
-Go to a partner. Next to the partner's email address you will see the
-checkbox 'Opt Out'. Once you press it the partner's email address will be
-blacklisted and the checkbox will be set. If you uncheck if the email address
+Go to a partner. Next to the partner's email address you will see
+a plus symbol. Once you press it the partner's email address will be
+blacklisted and then a ban will appear. If you click that ban the email address
will be removed from the blacklist.
-You can also search for partners using the opt out as search criteria.
+You can also filter for the Blacklist attribute, to see all the partner's that
+their email has been added to the blacklist.
diff --git a/mail_partner_opt_out/views/res_partner_views.xml b/mail_partner_opt_out/views/res_partner_views.xml
index 8d91b08553..3874630c87 100644
--- a/mail_partner_opt_out/views/res_partner_views.xml
+++ b/mail_partner_opt_out/views/res_partner_views.xml
@@ -1,11 +1,19 @@
-
+
+ res.partner.view.form.inherit.mailres.partner
-
+
From 4de2a477485d728a12e6261a9dc1bf4168134df7 Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Thu, 20 Jan 2022 18:07:42 +0000
Subject: [PATCH 6/9] [UPD] Update mail_partner_opt_out.pot
---
.../i18n/mail_partner_opt_out.pot | 29 +++++++++----------
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/mail_partner_opt_out/i18n/mail_partner_opt_out.pot b/mail_partner_opt_out/i18n/mail_partner_opt_out.pot
index 2f7fe8faeb..15f7c4b136 100644
--- a/mail_partner_opt_out/i18n/mail_partner_opt_out.pot
+++ b/mail_partner_opt_out/i18n/mail_partner_opt_out.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 13.0\n"
+"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -14,27 +14,26 @@ msgstr ""
"Plural-Forms: \n"
#. module: mail_partner_opt_out
-#: model:ir.model,name:mail_partner_opt_out.model_res_partner
-msgid "Contact"
+#: model_terms:ir.ui.view,arch_db:mail_partner_opt_out.res_partner_view_form_inherit_mail
+msgid "Click to add this email to the blacklist."
msgstr ""
#. module: mail_partner_opt_out
-#: model:ir.model.fields,field_description:mail_partner_opt_out.field_res_partner__opt_out
-#: model:ir.model.fields,field_description:mail_partner_opt_out.field_res_users__opt_out
-#: model_terms:ir.ui.view,arch_db:mail_partner_opt_out.view_partner_form
-msgid "Opt Out"
+#: model:ir.model.fields,field_description:mail_partner_opt_out.field_mail_thread_blacklist__display_name
+msgid "Display Name"
msgstr ""
#. module: mail_partner_opt_out
-#: model:ir.model.fields,help:mail_partner_opt_out.field_res_partner__opt_out
-#: model:ir.model.fields,help:mail_partner_opt_out.field_res_users__opt_out
-msgid ""
-"Setting this checkbox will add the partner's email to a blacklist so that "
-"this email won't be considered in mailings."
+#: model:ir.model.fields,field_description:mail_partner_opt_out.field_mail_thread_blacklist__id
+msgid "ID"
+msgstr ""
+
+#. module: mail_partner_opt_out
+#: model:ir.model.fields,field_description:mail_partner_opt_out.field_mail_thread_blacklist____last_update
+msgid "Last Modified on"
msgstr ""
#. module: mail_partner_opt_out
-#: code:addons/mail_partner_opt_out/models/res_partner.py:0
-#, python-format
-msgid "Unsupported search operator"
+#: model:ir.model,name:mail_partner_opt_out.model_mail_thread_blacklist
+msgid "Mail Blacklist mixin"
msgstr ""
From 79eba356372c91a3482d1b9549284f4f8eb35d08 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Thu, 20 Jan 2022 18:19:05 +0000
Subject: [PATCH 7/9] [UPD] README.rst
---
mail_partner_opt_out/README.rst | 21 ++++++++++---------
.../static/description/index.html | 17 ++++++++-------
2 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/mail_partner_opt_out/README.rst b/mail_partner_opt_out/README.rst
index 61e90e11f1..f89f75c84b 100644
--- a/mail_partner_opt_out/README.rst
+++ b/mail_partner_opt_out/README.rst
@@ -14,20 +14,20 @@ Mail Partner Opt Out
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-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_partner_opt_out
+ :target: https://github.com/OCA/social/tree/14.0/mail_partner_opt_out
: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_partner_opt_out
+ :target: https://translation.odoo-community.org/projects/social-14-0/social-14-0-mail_partner_opt_out
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/205/13.0
+ :target: https://runbot.odoo-community.org/runbot/205/14.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
This module adds the capability for a user to add a partner's email address
to the blackmail list so that she will not receive any emails from mass
-mailing campaigns.
+mailing campaigns
**Table of contents**
@@ -37,12 +37,13 @@ mailing campaigns.
Usage
=====
-Go to a partner. Next to the partner's email address you will see the
-checkbox 'Opt Out'. Once you press it the partner's email address will be
-blacklisted and the checkbox will be set. If you uncheck if the email address
+Go to a partner. Next to the partner's email address you will see
+a plus symbol. Once you press it the partner's email address will be
+blacklisted and then a ban will appear. If you click that ban the email address
will be removed from the blacklist.
-You can also search for partners using the opt out as search criteria.
+You can also filter for the Blacklist attribute, to see all the partner's that
+their email has been added to the blacklist.
Bug Tracker
===========
@@ -50,7 +51,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -82,6 +83,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_opt_out/static/description/index.html b/mail_partner_opt_out/static/description/index.html
index 64861235a3..280ff373a3 100644
--- a/mail_partner_opt_out/static/description/index.html
+++ b/mail_partner_opt_out/static/description/index.html
@@ -367,10 +367,10 @@
Mail Partner Opt Out
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
This module adds the capability for a user to add a partner’s email address
to the blackmail list so that she will not receive any emails from mass
-mailing campaigns.
Go to a partner. Next to the partner’s email address you will see the
-checkbox ‘Opt Out’. Once you press it the partner’s email address will be
-blacklisted and the checkbox will be set. If you uncheck if the email address
+
Go to a partner. Next to the partner’s email address you will see
+a plus symbol. Once you press it the partner’s email address will be
+blacklisted and then a ban will appear. If you click that ban the email address
will be removed from the blacklist.
-
You can also search for partners using the opt out as search criteria.
+
You can also filter for the Blacklist attribute, to see all the partner’s that
+their email has been added to the blacklist.
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.
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.