From 506aa23a8e454295762f1e5f8cd4960a6559cb24 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Wed, 8 Jul 2015 11:32:21 +0200 Subject: [PATCH 01/36] [ADD] mail_restrict_follower_selection --- mail_restrict_follower_selection/README.rst | 57 ++++++++++++++++++ mail_restrict_follower_selection/__init__.py | 20 ++++++ .../__openerp__.py | 41 +++++++++++++ .../data/ir_actions.xml | 15 +++++ .../data/ir_config_parameter.xml | 9 +++ .../models/__init__.py | 20 ++++++ .../models/mail_wizard_invite.py | 48 +++++++++++++++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../tests/__init__.py | 21 +++++++ .../test_mail_restrict_follower_selection.py | 31 ++++++++++ 10 files changed, 262 insertions(+) create mode 100644 mail_restrict_follower_selection/README.rst create mode 100644 mail_restrict_follower_selection/__init__.py create mode 100644 mail_restrict_follower_selection/__openerp__.py create mode 100644 mail_restrict_follower_selection/data/ir_actions.xml create mode 100644 mail_restrict_follower_selection/data/ir_config_parameter.xml create mode 100644 mail_restrict_follower_selection/models/__init__.py create mode 100644 mail_restrict_follower_selection/models/mail_wizard_invite.py create mode 100644 mail_restrict_follower_selection/static/description/icon.png create mode 100644 mail_restrict_follower_selection/tests/__init__.py create mode 100644 mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst new file mode 100644 index 000000000..5a633d532 --- /dev/null +++ b/mail_restrict_follower_selection/README.rst @@ -0,0 +1,57 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 +Restrict follower selection +=========================== + +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 employees. Otherwise, you'll get a quite crowded list of partners to choose from. + +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 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 `[('customer', '=', True)]` to allow only customers to be added as follower. + +Note: This module won't change existing followers! + +Usage +===== + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/205/8.0 + +For further information, please visit: + +* https://www.odoo.com/forum/help-1 + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed feedback +`here `_. + +Credits +======= + +Contributors +------------ + +* Holger Brunn + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/mail_restrict_follower_selection/__init__.py b/mail_restrict_follower_selection/__init__.py new file mode 100644 index 000000000..cdb7d7368 --- /dev/null +++ b/mail_restrict_follower_selection/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import models diff --git a/mail_restrict_follower_selection/__openerp__.py b/mail_restrict_follower_selection/__openerp__.py new file mode 100644 index 000000000..9d242619d --- /dev/null +++ b/mail_restrict_follower_selection/__openerp__.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2015 Therp BV . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +{ + "name": "Restrict follower selection", + "version": "8.0.1.0.0", + "author": "Therp BV,Odoo Community Association (OCA)", + "license": "AGPL-3", + "category": "Social Network", + "summary": "Define a domain from which followers can be selected", + "depends": [ + 'mail', + ], + "data": [ + "data/ir_config_parameter.xml", + "data/ir_actions.xml", + ], + "auto_install": False, + "installable": True, + "application": False, + "external_dependencies": { + 'python': [], + }, +} diff --git a/mail_restrict_follower_selection/data/ir_actions.xml b/mail_restrict_follower_selection/data/ir_actions.xml new file mode 100644 index 000000000..0b0859821 --- /dev/null +++ b/mail_restrict_follower_selection/data/ir_actions.xml @@ -0,0 +1,15 @@ + + + + + + + + + Configure the restriction on followers + automatic + + + + diff --git a/mail_restrict_follower_selection/data/ir_config_parameter.xml b/mail_restrict_follower_selection/data/ir_config_parameter.xml new file mode 100644 index 000000000..25c093cb0 --- /dev/null +++ b/mail_restrict_follower_selection/data/ir_config_parameter.xml @@ -0,0 +1,9 @@ + + + + + mail_restrict_follower_selection.domain + [('employee', '=', True)] + + + diff --git a/mail_restrict_follower_selection/models/__init__.py b/mail_restrict_follower_selection/models/__init__.py new file mode 100644 index 000000000..cc7bb9cdd --- /dev/null +++ b/mail_restrict_follower_selection/models/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import mail_wizard_invite diff --git a/mail_restrict_follower_selection/models/mail_wizard_invite.py b/mail_restrict_follower_selection/models/mail_wizard_invite.py new file mode 100644 index 000000000..5d0e7ee2b --- /dev/null +++ b/mail_restrict_follower_selection/models/mail_wizard_invite.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# This module copyright (C) 2015 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from lxml import etree +from openerp import models, api + + +class MailWizardInvite(models.TransientModel): + _inherit = 'mail.wizard.invite' + + @api.model + def _mail_restrict_follower_selection_get_domain(self): + parameter_name = 'mail_restrict_follower_selection.domain' + return self.env['ir.config_parameter'].get_param( + '%s.%s' % (parameter_name, + self.env.context.get('default_res_model')), + self.env['ir.config_parameter'].get_param( + parameter_name, default='[]') + ) + + @api.model + def fields_view_get(self, view_id=None, view_type='form', toolbar=False, + submenu=False): + result = super(MailWizardInvite, self).fields_view_get( + view_id=view_id, view_type=view_type, toolbar=toolbar, + submenu=submenu) + arch = etree.fromstring(result['arch']) + for field in arch.xpath('//field[@name="partner_ids"]'): + field.attrib['domain'] = self\ + ._mail_restrict_follower_selection_get_domain() + result['arch'] = etree.tostring(arch) + return result diff --git a/mail_restrict_follower_selection/static/description/icon.png b/mail_restrict_follower_selection/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_restrict_follower_selection/tests/__init__.py b/mail_restrict_follower_selection/tests/__init__.py new file mode 100644 index 000000000..6d2a768a8 --- /dev/null +++ b/mail_restrict_follower_selection/tests/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2015 Therp BV . +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import test_mail_restrict_follower_selection diff --git a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py new file mode 100644 index 000000000..b89567ea2 --- /dev/null +++ b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2015 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from lxml import etree +from openerp.tests.common import TransactionCase + + +class TestMailRestrictFollowerSelection(TransactionCase): + def test_fields_view_get(self): + result = self.env['mail.wizard.invite'].fields_view_get( + view_type='form') + for field in etree.fromstring(result['arch']).xpath( + '//field[@name="partner_ids"]'): + self.assertTrue(field.get('domain')) From 8cca7b856744cdae455a126327162c06e74dd88b Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Fri, 4 Sep 2015 10:37:33 +0200 Subject: [PATCH 02/36] [FIX] better default filter --- mail_restrict_follower_selection/README.rst | 2 +- mail_restrict_follower_selection/data/ir_config_parameter.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst index 5a633d532..05ecfeb74 100644 --- a/mail_restrict_follower_selection/README.rst +++ b/mail_restrict_follower_selection/README.rst @@ -10,7 +10,7 @@ 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 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 `[('customer', '=', True)]` to allow only customers to be added as follower. +As an example, you could use `[('customer', '=', True)]` to allow only customers to be added as follower - this also is the default. 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 25c093cb0..280ae711b 100644 --- a/mail_restrict_follower_selection/data/ir_config_parameter.xml +++ b/mail_restrict_follower_selection/data/ir_config_parameter.xml @@ -3,7 +3,7 @@ mail_restrict_follower_selection.domain - [('employee', '=', True)] + [('customer', '=', True)] From 12d05c15f5bfb7119fbc9e9d4767e5e63bc9c7ec Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Wed, 14 Oct 2015 02:54:06 +0200 Subject: [PATCH 03/36] [MIG] Make modules uninstallable --- mail_restrict_follower_selection/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mail_restrict_follower_selection/__openerp__.py b/mail_restrict_follower_selection/__openerp__.py index 9d242619d..80cdcf270 100644 --- a/mail_restrict_follower_selection/__openerp__.py +++ b/mail_restrict_follower_selection/__openerp__.py @@ -33,7 +33,7 @@ "data/ir_actions.xml", ], "auto_install": False, - "installable": True, + 'installable': False, "application": False, "external_dependencies": { 'python': [], From 972a4b507b995f42b89f08738daeae99cd445fa2 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 6 Oct 2016 16:08:42 +0200 Subject: [PATCH 04/36] [MIG] Rename manifest files --- .../{__openerp__.py => __manifest__.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mail_restrict_follower_selection/{__openerp__.py => __manifest__.py} (100%) diff --git a/mail_restrict_follower_selection/__openerp__.py b/mail_restrict_follower_selection/__manifest__.py similarity index 100% rename from mail_restrict_follower_selection/__openerp__.py rename to mail_restrict_follower_selection/__manifest__.py From 6f8e07c9a45bfc000b8eca3d6b91417b7ba2f952 Mon Sep 17 00:00:00 2001 From: Damien Bouvy Date: Fri, 14 Oct 2016 19:40:18 +0200 Subject: [PATCH 05/36] [MIG] mail_restrict_follower_selection: Migrated to 10.0 --- mail_restrict_follower_selection/README.rst | 2 +- .../__manifest__.py | 4 +-- .../data/ir_actions.xml | 26 ++++++++--------- .../data/ir_config_parameter.xml | 14 ++++----- mail_restrict_follower_selection/i18n/en.po | 28 ++++++++++++++++++ mail_restrict_follower_selection/i18n/fr.po | 29 +++++++++++++++++++ mail_restrict_follower_selection/i18n/hr.po | 29 +++++++++++++++++++ mail_restrict_follower_selection/i18n/it.po | 29 +++++++++++++++++++ mail_restrict_follower_selection/i18n/sl.po | 29 +++++++++++++++++++ .../models/mail_wizard_invite.py | 2 +- 10 files changed, 166 insertions(+), 26 deletions(-) create mode 100644 mail_restrict_follower_selection/i18n/en.po create mode 100644 mail_restrict_follower_selection/i18n/fr.po create mode 100644 mail_restrict_follower_selection/i18n/hr.po create mode 100644 mail_restrict_follower_selection/i18n/it.po create mode 100644 mail_restrict_follower_selection/i18n/sl.po diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst index 05ecfeb74..97c76b0f3 100644 --- a/mail_restrict_follower_selection/README.rst +++ b/mail_restrict_follower_selection/README.rst @@ -19,7 +19,7 @@ Usage .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/205/8.0 + :target: https://runbot.odoo-community.org/runbot/205/10.0 For further information, please visit: diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index 80cdcf270..a6d9c17d1 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -20,7 +20,7 @@ ############################################################################## { "name": "Restrict follower selection", - "version": "8.0.1.0.0", + "version": "10.0.1.0.0", "author": "Therp BV,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", @@ -33,7 +33,7 @@ "data/ir_actions.xml", ], "auto_install": False, - 'installable': False, + 'installable': True, "application": False, "external_dependencies": { 'python': [], diff --git a/mail_restrict_follower_selection/data/ir_actions.xml b/mail_restrict_follower_selection/data/ir_actions.xml index 0b0859821..39462e539 100644 --- a/mail_restrict_follower_selection/data/ir_actions.xml +++ b/mail_restrict_follower_selection/data/ir_actions.xml @@ -1,15 +1,13 @@ - - - - - - - - Configure the restriction on followers - automatic - - - - + + + + + + + Configure the restriction on followers + automatic + + + diff --git a/mail_restrict_follower_selection/data/ir_config_parameter.xml b/mail_restrict_follower_selection/data/ir_config_parameter.xml index 280ae711b..f4a1daf2e 100644 --- a/mail_restrict_follower_selection/data/ir_config_parameter.xml +++ b/mail_restrict_follower_selection/data/ir_config_parameter.xml @@ -1,9 +1,7 @@ - - - - mail_restrict_follower_selection.domain - [('customer', '=', True)] - - - + + + mail_restrict_follower_selection.domain + [('customer', '=', True)] + + diff --git a/mail_restrict_follower_selection/i18n/en.po b/mail_restrict_follower_selection/i18n/en.po new file mode 100644 index 000000000..1d50b0148 --- /dev/null +++ b/mail_restrict_follower_selection/i18n/en.po @@ -0,0 +1,28 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_restrict_follower_selection +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: social (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-30 16:56+0000\n" +"PO-Revision-Date: 2015-09-30 16:56+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: English (http://www.transifex.com/oca/OCA-social-8-0/language/en/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_restrict_follower_selection +#: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup +msgid "Configure the restriction on followers" +msgstr "Configure the restriction on followers" + +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite +msgid "Invite wizard" +msgstr "Invite wizard" diff --git a/mail_restrict_follower_selection/i18n/fr.po b/mail_restrict_follower_selection/i18n/fr.po new file mode 100644 index 000000000..496e862f3 --- /dev/null +++ b/mail_restrict_follower_selection/i18n/fr.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_restrict_follower_selection +# +# Translators: +# Quentin THEURET , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-22 09:45+0000\n" +"PO-Revision-Date: 2017-07-22 09:45+0000\n" +"Last-Translator: Quentin THEURET , 2017\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: mail_restrict_follower_selection +#: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup +msgid "Configure the restriction on followers" +msgstr "Configurer les restrictions sur les abonnés" + +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite +msgid "Invite wizard" +msgstr "Assistant d'invitation" diff --git a/mail_restrict_follower_selection/i18n/hr.po b/mail_restrict_follower_selection/i18n/hr.po new file mode 100644 index 000000000..2986af18e --- /dev/null +++ b/mail_restrict_follower_selection/i18n/hr.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_restrict_follower_selection +# +# Translators: +# Bole , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-29 14:24+0000\n" +"PO-Revision-Date: 2016-11-29 14:24+0000\n" +"Last-Translator: Bole , 2016\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: mail_restrict_follower_selection +#: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup +msgid "Configure the restriction on followers" +msgstr "Postavi ograničenja na pratitelje" + +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite +msgid "Invite wizard" +msgstr "Čarobnjak za pozivnce" diff --git a/mail_restrict_follower_selection/i18n/it.po b/mail_restrict_follower_selection/i18n/it.po new file mode 100644 index 000000000..b3df71801 --- /dev/null +++ b/mail_restrict_follower_selection/i18n/it.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_restrict_follower_selection +# +# Translators: +# Marius Marolla , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-05-17 01:02+0000\n" +"PO-Revision-Date: 2017-05-17 01:02+0000\n" +"Last-Translator: Marius Marolla , 2017\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_restrict_follower_selection +#: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup +msgid "Configure the restriction on followers" +msgstr "Imposta restrizioni sui follower" + +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite +msgid "Invite wizard" +msgstr "Wizard Creazione Invito" diff --git a/mail_restrict_follower_selection/i18n/sl.po b/mail_restrict_follower_selection/i18n/sl.po new file mode 100644 index 000000000..370eb8186 --- /dev/null +++ b/mail_restrict_follower_selection/i18n/sl.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_restrict_follower_selection +# +# Translators: +# Matjaž Mozetič , 2015 +msgid "" +msgstr "" +"Project-Id-Version: social (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-30 16:56+0000\n" +"PO-Revision-Date: 2015-10-01 13:00+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-social-8-0/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: mail_restrict_follower_selection +#: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup +msgid "Configure the restriction on followers" +msgstr "Nastavitev omejitev za sledilce" + +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite +msgid "Invite wizard" +msgstr "Čarovnik za vabila" diff --git a/mail_restrict_follower_selection/models/mail_wizard_invite.py b/mail_restrict_follower_selection/models/mail_wizard_invite.py index 5d0e7ee2b..5ca0c7a57 100644 --- a/mail_restrict_follower_selection/models/mail_wizard_invite.py +++ b/mail_restrict_follower_selection/models/mail_wizard_invite.py @@ -18,7 +18,7 @@ # ############################################################################## from lxml import etree -from openerp import models, api +from odoo import models, api class MailWizardInvite(models.TransientModel): From 2a23e8cdb812c9780ba5f89027d914483f1847df Mon Sep 17 00:00:00 2001 From: phucngta Date: Tue, 6 Mar 2018 15:18:36 +0700 Subject: [PATCH 06/36] [11.0][MIG] mail_restrict_follower_selection --- mail_restrict_follower_selection/README.rst | 5 +++- mail_restrict_follower_selection/__init__.py | 23 +++------------ .../__manifest__.py | 26 ++++------------- .../data/ir_actions.xml | 1 - .../models/__init__.py | 23 +++------------ .../models/mail_wizard_invite.py | 29 +++++-------------- .../tests/__init__.py | 24 +++------------ .../test_mail_restrict_follower_selection.py | 25 ++++------------ 8 files changed, 33 insertions(+), 123 deletions(-) diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst index 97c76b0f3..bbcd1aebf 100644 --- a/mail_restrict_follower_selection/README.rst +++ b/mail_restrict_follower_selection/README.rst @@ -1,5 +1,7 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 + :alt: License: AGPL-3 + +=========================== Restrict follower selection =========================== @@ -40,6 +42,7 @@ Contributors ------------ * Holger Brunn +* Nguyen Tan Phuc Maintainer ---------- diff --git a/mail_restrict_follower_selection/__init__.py b/mail_restrict_follower_selection/__init__.py index cdb7d7368..9537e12db 100644 --- a/mail_restrict_follower_selection/__init__.py +++ b/mail_restrict_follower_selection/__init__.py @@ -1,20 +1,5 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV . -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# Copyright (C) 2015 Therp BV +# Copyright (C) 2017 Komit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from . import models diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index a6d9c17d1..2f81a5489 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -1,26 +1,10 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# This module copyright (C) 2015 Therp BV . -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# Copyright (C) 2015 Therp BV +# Copyright (C) 2017 Komit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + { "name": "Restrict follower selection", - "version": "10.0.1.0.0", + "version": "11.0.1.0.0", "author": "Therp BV,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", diff --git a/mail_restrict_follower_selection/data/ir_actions.xml b/mail_restrict_follower_selection/data/ir_actions.xml index 39462e539..63c84f024 100644 --- a/mail_restrict_follower_selection/data/ir_actions.xml +++ b/mail_restrict_follower_selection/data/ir_actions.xml @@ -7,7 +7,6 @@ Configure the restriction on followers - automatic diff --git a/mail_restrict_follower_selection/models/__init__.py b/mail_restrict_follower_selection/models/__init__.py index cc7bb9cdd..422ffaf54 100644 --- a/mail_restrict_follower_selection/models/__init__.py +++ b/mail_restrict_follower_selection/models/__init__.py @@ -1,20 +1,5 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV . -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# Copyright (C) 2015 Therp BV +# Copyright (C) 2017 Komit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from . import mail_wizard_invite diff --git a/mail_restrict_follower_selection/models/mail_wizard_invite.py b/mail_restrict_follower_selection/models/mail_wizard_invite.py index 5ca0c7a57..216e26bb5 100644 --- a/mail_restrict_follower_selection/models/mail_wizard_invite.py +++ b/mail_restrict_follower_selection/models/mail_wizard_invite.py @@ -1,24 +1,9 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# This module copyright (C) 2015 Therp BV (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# Copyright (C) 2015 Therp BV +# Copyright (C) 2017 Komit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from lxml import etree -from odoo import models, api +from odoo import api, models class MailWizardInvite(models.TransientModel): @@ -28,8 +13,8 @@ class MailWizardInvite(models.TransientModel): def _mail_restrict_follower_selection_get_domain(self): parameter_name = 'mail_restrict_follower_selection.domain' return self.env['ir.config_parameter'].get_param( - '%s.%s' % (parameter_name, - self.env.context.get('default_res_model')), + "{0}.{1}".format(parameter_name, + self.env.context.get('default_res_model')), self.env['ir.config_parameter'].get_param( parameter_name, default='[]') ) diff --git a/mail_restrict_follower_selection/tests/__init__.py b/mail_restrict_follower_selection/tests/__init__.py index 6d2a768a8..10093c8f1 100644 --- a/mail_restrict_follower_selection/tests/__init__.py +++ b/mail_restrict_follower_selection/tests/__init__.py @@ -1,21 +1,5 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# This module copyright (C) 2015 Therp BV . -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# Copyright (C) 2015 Therp BV +# Copyright (C) 2017 Komit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from . import test_mail_restrict_follower_selection diff --git a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py index b89567ea2..d1905b183 100644 --- a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py +++ b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py @@ -1,28 +1,13 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# This module copyright (C) 2015 Therp BV (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## +# Copyright (C) 2015 Therp BV +# Copyright (C) 2017 Komit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from lxml import etree from openerp.tests.common import TransactionCase class TestMailRestrictFollowerSelection(TransactionCase): + def test_fields_view_get(self): result = self.env['mail.wizard.invite'].fields_view_get( view_type='form') From b48c485d2969df4e36806dbace7a539a6e33e164 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Wed, 4 Apr 2018 10:19:13 +0200 Subject: [PATCH 07/36] [IMP] disable the option to create followers that do not meet the conditions --- mail_restrict_follower_selection/README.rst | 5 ++- .../__manifest__.py | 4 +- mail_restrict_follower_selection/i18n/en.po | 12 ++++-- mail_restrict_follower_selection/i18n/fr.po | 9 +++- mail_restrict_follower_selection/i18n/hr.po | 12 ++++-- mail_restrict_follower_selection/i18n/it.po | 9 +++- .../i18n/mail_restrict_follower_selection.pot | 30 +++++++++++++ mail_restrict_follower_selection/i18n/sl.po | 15 +++++-- .../models/__init__.py | 1 + .../models/mail_followers.py | 24 +++++++++++ .../models/mail_wizard_invite.py | 4 +- .../test_mail_restrict_follower_selection.py | 43 ++++++++++++++++++- 12 files changed, 148 insertions(+), 20 deletions(-) create mode 100644 mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot create mode 100644 mail_restrict_follower_selection/models/mail_followers.py diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst index bbcd1aebf..fb0656d42 100644 --- a/mail_restrict_follower_selection/README.rst +++ b/mail_restrict_follower_selection/README.rst @@ -7,6 +7,8 @@ Restrict follower selection 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 employees. Otherwise, you'll get a quite crowded list of partners to choose from. +Moreover, the module disables the option to automatically add followers that do not meet the domain. + Configuration ============= @@ -21,7 +23,7 @@ Usage .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/205/10.0 + :target: https://runbot.odoo-community.org/runbot/205/11.0 For further information, please visit: @@ -43,6 +45,7 @@ Contributors * Holger Brunn * Nguyen Tan Phuc +* Enric Tobella Maintainer ---------- diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index 2f81a5489..bfeb8bfcc 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -4,8 +4,8 @@ { "name": "Restrict follower selection", - "version": "11.0.1.0.0", - "author": "Therp BV,Odoo Community Association (OCA)", + "version": "11.0.2.0.0", + "author": "Therp BV,Creu Blanca,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", "summary": "Define a domain from which followers can be selected", diff --git a/mail_restrict_follower_selection/i18n/en.po b/mail_restrict_follower_selection/i18n/en.po index 1d50b0148..b6c0235db 100644 --- a/mail_restrict_follower_selection/i18n/en.po +++ b/mail_restrict_follower_selection/i18n/en.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * mail_restrict_follower_selection -# +# # Translators: msgid "" msgstr "" @@ -10,11 +10,12 @@ msgstr "" "POT-Creation-Date: 2015-09-30 16:56+0000\n" "PO-Revision-Date: 2015-09-30 16:56+0000\n" "Last-Translator: OCA Transbot \n" -"Language-Team: English (http://www.transifex.com/oca/OCA-social-8-0/language/en/)\n" +"Language-Team: English (http://www.transifex.com/oca/OCA-social-8-0/language/" +"en/)\n" +"Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: mail_restrict_follower_selection @@ -22,6 +23,11 @@ msgstr "" msgid "Configure the restriction on followers" msgstr "Configure the restriction on followers" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers +msgid "Document Followers" +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 496e862f3..4a8952177 100644 --- a/mail_restrict_follower_selection/i18n/fr.po +++ b/mail_restrict_follower_selection/i18n/fr.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * mail_restrict_follower_selection -# +# # Translators: # Quentin THEURET , 2017 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2017-07-22 09:45+0000\n" "Last-Translator: Quentin THEURET , 2017\n" "Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: mail_restrict_follower_selection @@ -23,6 +23,11 @@ msgstr "" msgid "Configure the restriction on followers" msgstr "Configurer les restrictions sur les abonnés" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers +msgid "Document Followers" +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 2986af18e..4d7bc08fe 100644 --- a/mail_restrict_follower_selection/i18n/hr.po +++ b/mail_restrict_follower_selection/i18n/hr.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * mail_restrict_follower_selection -# +# # Translators: # Bole , 2016 msgid "" @@ -12,17 +12,23 @@ msgstr "" "PO-Revision-Date: 2016-11-29 14:24+0000\n" "Last-Translator: Bole , 2016\n" "Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: hr\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #. module: mail_restrict_follower_selection #: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup msgid "Configure the restriction on followers" msgstr "Postavi ograničenja na pratitelje" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers +msgid "Document Followers" +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 b3df71801..10a71b6cd 100644 --- a/mail_restrict_follower_selection/i18n/it.po +++ b/mail_restrict_follower_selection/i18n/it.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * mail_restrict_follower_selection -# +# # Translators: # Marius Marolla , 2017 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2017-05-17 01:02+0000\n" "Last-Translator: Marius Marolla , 2017\n" "Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: mail_restrict_follower_selection @@ -23,6 +23,11 @@ msgstr "" msgid "Configure the restriction on followers" msgstr "Imposta restrizioni sui follower" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers +msgid "Document Followers" +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/mail_restrict_follower_selection.pot b/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot new file mode 100644 index 000000000..6bcf2f7bd --- /dev/null +++ b/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_restrict_follower_selection +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.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_restrict_follower_selection +#: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup +msgid "Configure the restriction on followers" +msgstr "" + +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers +msgid "Document Followers" +msgstr "" + +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite +msgid "Invite wizard" +msgstr "" + diff --git a/mail_restrict_follower_selection/i18n/sl.po b/mail_restrict_follower_selection/i18n/sl.po index 370eb8186..d64d0baab 100644 --- a/mail_restrict_follower_selection/i18n/sl.po +++ b/mail_restrict_follower_selection/i18n/sl.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * mail_restrict_follower_selection -# +# # Translators: # Matjaž Mozetič , 2015 msgid "" @@ -11,18 +11,25 @@ msgstr "" "POT-Creation-Date: 2015-09-30 16:56+0000\n" "PO-Revision-Date: 2015-10-01 13:00+0000\n" "Last-Translator: Matjaž Mozetič \n" -"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-social-8-0/language/sl/)\n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-social-8-0/" +"language/sl/)\n" +"Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: sl\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" #. module: mail_restrict_follower_selection #: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup msgid "Configure the restriction on followers" msgstr "Nastavitev omejitev za sledilce" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers +msgid "Document Followers" +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/models/__init__.py b/mail_restrict_follower_selection/models/__init__.py index 422ffaf54..a757c6b4e 100644 --- a/mail_restrict_follower_selection/models/__init__.py +++ b/mail_restrict_follower_selection/models/__init__.py @@ -2,4 +2,5 @@ # Copyright (C) 2017 Komit # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from . import mail_followers from . import mail_wizard_invite diff --git a/mail_restrict_follower_selection/models/mail_followers.py b/mail_restrict_follower_selection/models/mail_followers.py new file mode 100644 index 000000000..15e906eb1 --- /dev/null +++ b/mail_restrict_follower_selection/models/mail_followers.py @@ -0,0 +1,24 @@ +# Copyright (C) 2018 Creu Blanca +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models +from odoo.tools.safe_eval import safe_eval + + +class MailFollowers(models.Model): + _inherit = 'mail.followers' + + @api.model + def _add_follower_command(self, res_model, res_ids, partner_data, + channel_data, force=True): + domain = self.env[ + 'mail.wizard.invite' + ]._mail_restrict_follower_selection_get_domain() + partners = self.env['res.partner'].search( + [('id', 'in', list(partner_data))] + + safe_eval(domain) + ) + return super()._add_follower_command( + res_model, res_ids, + {p.id: partner_data[p.id] for p in partners}, + channel_data, force=force) diff --git a/mail_restrict_follower_selection/models/mail_wizard_invite.py b/mail_restrict_follower_selection/models/mail_wizard_invite.py index 216e26bb5..1d8b31caa 100644 --- a/mail_restrict_follower_selection/models/mail_wizard_invite.py +++ b/mail_restrict_follower_selection/models/mail_wizard_invite.py @@ -12,10 +12,10 @@ class MailWizardInvite(models.TransientModel): @api.model def _mail_restrict_follower_selection_get_domain(self): parameter_name = 'mail_restrict_follower_selection.domain' - return self.env['ir.config_parameter'].get_param( + return self.env['ir.config_parameter'].sudo().get_param( "{0}.{1}".format(parameter_name, self.env.context.get('default_res_model')), - self.env['ir.config_parameter'].get_param( + self.env['ir.config_parameter'].sudo().get_param( parameter_name, default='[]') ) diff --git a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py index d1905b183..4bf6410df 100644 --- a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py +++ b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py @@ -3,14 +3,55 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from lxml import etree -from openerp.tests.common import TransactionCase +from odoo.tests.common import TransactionCase class TestMailRestrictFollowerSelection(TransactionCase): + def setUp(self): + super().setUp() + self.partner = self.env['res.partner'].create({ + 'name': 'Partner', + 'customer': True, + 'email': 'test@test.com', + }) + def test_fields_view_get(self): result = self.env['mail.wizard.invite'].fields_view_get( view_type='form') for field in etree.fromstring(result['arch']).xpath( '//field[@name="partner_ids"]'): self.assertTrue(field.get('domain')) + + def send_action(self): + compose = self.env['mail.compose.message'].with_context({ + 'mail_post_autofollow': True, + 'default_composition_mode': 'comment', + 'default_model': 'res.partner', + 'default_use_active_domain': True, + }).create({ + 'subject': 'From Composer Test', + 'body': '${object.description}', + 'res_id': self.partner.id, + 'partner_ids': [(4, id) for id in self.partner.ids], + }) + self.assertEqual(compose.partner_ids, self.partner) + compose.send_mail_action() + + def test_followers_meet(self): + self.partner.write({'customer': True}) + self.assertTrue(self.partner.customer) + self.send_action() + self.assertIn( + self.partner, + self.partner.message_follower_ids.mapped('partner_id') + ) + + def test_followers_not_meet(self): + self.partner.write({'customer': False}) + self.assertFalse(self.partner.customer) + self.send_action() + self.assertNotIn( + self.partner, + self.partner.message_follower_ids.mapped('partner_id') + ) From d9095de9e455d20c7e82d4f9d4d32f1a2a7342ff Mon Sep 17 00:00:00 2001 From: c2cdidier Date: Mon, 18 Jun 2018 09:40:13 +0000 Subject: [PATCH 08/36] Translated using Weblate (French) [ci skip] Currently translated at 100.0% (3 of 3 strings) Translation: social-11.0/social-11.0-mail_restrict_follower_selection Translate-URL: https://translation.odoo-community.org/projects/social-11-0/social-11-0-mail_restrict_follower_selection/fr/ --- mail_restrict_follower_selection/i18n/de.po | 30 +++++++++++++++++++++ mail_restrict_follower_selection/i18n/fr.po | 9 ++++--- 2 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 mail_restrict_follower_selection/i18n/de.po diff --git a/mail_restrict_follower_selection/i18n/de.po b/mail_restrict_follower_selection/i18n/de.po new file mode 100644 index 000000000..e73100287 --- /dev/null +++ b/mail_restrict_follower_selection/i18n/de.po @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_restrict_follower_selection +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.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_restrict_follower_selection +#: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup +msgid "Configure the restriction on followers" +msgstr "" + +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers +msgid "Document Followers" +msgstr "" + +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite +msgid "Invite wizard" +msgstr "" diff --git a/mail_restrict_follower_selection/i18n/fr.po b/mail_restrict_follower_selection/i18n/fr.po index 4a8952177..e37d2767c 100644 --- a/mail_restrict_follower_selection/i18n/fr.po +++ b/mail_restrict_follower_selection/i18n/fr.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 09:45+0000\n" -"PO-Revision-Date: 2017-07-22 09:45+0000\n" -"Last-Translator: Quentin THEURET , 2017\n" +"PO-Revision-Date: 2018-06-18 09:40+0000\n" +"Last-Translator: c2cdidier \n" "Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.0.1\n" #. module: mail_restrict_follower_selection #: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup @@ -26,7 +27,7 @@ msgstr "Configurer les restrictions sur les abonnés" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers msgid "Document Followers" -msgstr "" +msgstr "Suiveurs du document" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite From 89298aeb2453b5a881bd308c60e46f1c7e54d2ea Mon Sep 17 00:00:00 2001 From: Maria Sparenberg Date: Fri, 14 Dec 2018 15:19:49 +0000 Subject: [PATCH 09/36] Translated using Weblate (German) Currently translated at 100.0% (3 of 3 strings) Translation: social-11.0/social-11.0-mail_restrict_follower_selection Translate-URL: https://translation.odoo-community.org/projects/social-11-0/social-11-0-mail_restrict_follower_selection/de/ --- mail_restrict_follower_selection/i18n/de.po | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mail_restrict_follower_selection/i18n/de.po b/mail_restrict_follower_selection/i18n/de.po index e73100287..1495d7c39 100644 --- a/mail_restrict_follower_selection/i18n/de.po +++ b/mail_restrict_follower_selection/i18n/de.po @@ -6,25 +6,27 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2018-12-15 14:58+0000\n" +"Last-Translator: Maria Sparenberg \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" #. module: mail_restrict_follower_selection #: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup msgid "Configure the restriction on followers" -msgstr "" +msgstr "Beschränkung der Abonnenten konfigurieren" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers msgid "Document Followers" -msgstr "" +msgstr "Abonnenten des Dokuments" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" -msgstr "" +msgstr "Assistent zum Einladen von Abonnenten" From d05632c4204a787c4e45c76eb4c9fecb428e28e6 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Thu, 23 Jan 2020 15:18:11 +0100 Subject: [PATCH 10/36] fixes a corner case where you could send an email to a partner that you are not supposed to. --- mail_restrict_follower_selection/i18n/de.po | 7 +++++- mail_restrict_follower_selection/i18n/en.po | 5 ++++ mail_restrict_follower_selection/i18n/fr.po | 5 ++++ mail_restrict_follower_selection/i18n/hr.po | 5 ++++ mail_restrict_follower_selection/i18n/it.po | 5 ++++ .../i18n/mail_restrict_follower_selection.pot | 5 ++++ mail_restrict_follower_selection/i18n/sl.po | 5 ++++ .../models/__init__.py | 1 + .../models/mail_thread.py | 25 +++++++++++++++++++ 9 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 mail_restrict_follower_selection/models/mail_thread.py diff --git a/mail_restrict_follower_selection/i18n/de.po b/mail_restrict_follower_selection/i18n/de.po index 1495d7c39..eff22263f 100644 --- a/mail_restrict_follower_selection/i18n/de.po +++ b/mail_restrict_follower_selection/i18n/de.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * mail_restrict_follower_selection +# * mail_restrict_follower_selection # msgid "" msgstr "" @@ -26,6 +26,11 @@ msgstr "Beschränkung der Abonnenten konfigurieren" msgid "Document Followers" msgstr "Abonnenten des Dokuments" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread +msgid "Email Thread" +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/en.po b/mail_restrict_follower_selection/i18n/en.po index b6c0235db..e03abf358 100644 --- a/mail_restrict_follower_selection/i18n/en.po +++ b/mail_restrict_follower_selection/i18n/en.po @@ -28,6 +28,11 @@ msgstr "Configure the restriction on followers" msgid "Document Followers" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread +msgid "Email Thread" +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 e37d2767c..7f96c92b0 100644 --- a/mail_restrict_follower_selection/i18n/fr.po +++ b/mail_restrict_follower_selection/i18n/fr.po @@ -29,6 +29,11 @@ msgstr "Configurer les restrictions sur les abonnés" msgid "Document Followers" msgstr "Suiveurs du document" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread +msgid "Email Thread" +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 4d7bc08fe..38a74e130 100644 --- a/mail_restrict_follower_selection/i18n/hr.po +++ b/mail_restrict_follower_selection/i18n/hr.po @@ -29,6 +29,11 @@ msgstr "Postavi ograničenja na pratitelje" msgid "Document Followers" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread +msgid "Email Thread" +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 10a71b6cd..54ec814bb 100644 --- a/mail_restrict_follower_selection/i18n/it.po +++ b/mail_restrict_follower_selection/i18n/it.po @@ -28,6 +28,11 @@ msgstr "Imposta restrizioni sui follower" msgid "Document Followers" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread +msgid "Email Thread" +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/mail_restrict_follower_selection.pot b/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot index 6bcf2f7bd..8a87100bf 100644 --- a/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot +++ b/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot @@ -23,6 +23,11 @@ msgstr "" msgid "Document Followers" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread +msgid "Email Thread" +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 d64d0baab..b350b0264 100644 --- a/mail_restrict_follower_selection/i18n/sl.po +++ b/mail_restrict_follower_selection/i18n/sl.po @@ -30,6 +30,11 @@ msgstr "Nastavitev omejitev za sledilce" msgid "Document Followers" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread +msgid "Email Thread" +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/models/__init__.py b/mail_restrict_follower_selection/models/__init__.py index a757c6b4e..d6a528cb7 100644 --- a/mail_restrict_follower_selection/models/__init__.py +++ b/mail_restrict_follower_selection/models/__init__.py @@ -4,3 +4,4 @@ from . import mail_followers from . import mail_wizard_invite +from . import mail_thread diff --git a/mail_restrict_follower_selection/models/mail_thread.py b/mail_restrict_follower_selection/models/mail_thread.py new file mode 100644 index 000000000..c22dd3d41 --- /dev/null +++ b/mail_restrict_follower_selection/models/mail_thread.py @@ -0,0 +1,25 @@ +from odoo import api, models +from odoo.tools.safe_eval import safe_eval + + +class MailThread(models.AbstractModel): + _inherit = 'mail.thread' + + @api.multi + def _message_add_suggested_recipient( + self, result, partner=None, email=None, reason=''): + result = super(MailThread, self)._message_add_suggested_recipient( + result, partner=partner, email=email, reason=reason) + domain = self.env[ + 'mail.wizard.invite' + ]._mail_restrict_follower_selection_get_domain() + eval_domain = safe_eval(domain) + for key in result: + for partner_id, email, reason in result[key]: + if partner_id: + partner = self.env['res.partner'].search( + [('id', '=', partner_id)] + eval_domain + ) + if not partner: + result[key].remove((partner_id, email, reason)) + return result From 19e4eea7e4870fab157ead6074a834bc9026a10e Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Wed, 4 Mar 2020 16:27:05 +0100 Subject: [PATCH 11/36] [12.0][MIG] mail_restrict_follower_selection --- .../__manifest__.py | 7 +----- .../models/mail_followers.py | 25 ++++++++++++------- .../test_mail_restrict_follower_selection.py | 2 +- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index bfeb8bfcc..cba1fe639 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Restrict follower selection", - "version": "11.0.2.0.0", + "version": "12.0.1.0.0", "author": "Therp BV,Creu Blanca,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", @@ -16,10 +16,5 @@ "data/ir_config_parameter.xml", "data/ir_actions.xml", ], - "auto_install": False, 'installable': True, - "application": False, - "external_dependencies": { - 'python': [], - }, } diff --git a/mail_restrict_follower_selection/models/mail_followers.py b/mail_restrict_follower_selection/models/mail_followers.py index 15e906eb1..c096f1fe5 100644 --- a/mail_restrict_follower_selection/models/mail_followers.py +++ b/mail_restrict_follower_selection/models/mail_followers.py @@ -1,24 +1,31 @@ # Copyright (C) 2018 Creu Blanca # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import api, models +from odoo import models from odoo.tools.safe_eval import safe_eval class MailFollowers(models.Model): _inherit = 'mail.followers' - @api.model - def _add_follower_command(self, res_model, res_ids, partner_data, - channel_data, force=True): + def _add_followers(self, res_model, res_ids, partner_ids, partner_subtypes, + channel_ids, channel_subtypes, + check_existing=False, existing_policy='skip'): domain = self.env[ 'mail.wizard.invite' ]._mail_restrict_follower_selection_get_domain() partners = self.env['res.partner'].search( - [('id', 'in', list(partner_data))] + + [('id', 'in', partner_ids)] + safe_eval(domain) ) - return super()._add_follower_command( - res_model, res_ids, - {p.id: partner_data[p.id] for p in partners}, - channel_data, force=force) + _res_ids = res_ids.copy() or [0] + new, update = super()._add_followers( + res_model, res_ids, partners.ids, partner_subtypes, channel_ids, + channel_subtypes, check_existing=check_existing, + existing_policy=existing_policy + ) + + for res_id in _res_ids: + if res_id not in new: + new.setdefault(res_id, list()) + return new, update diff --git a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py index 4bf6410df..4eb0bb128 100644 --- a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py +++ b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py @@ -36,7 +36,7 @@ def send_action(self): 'partner_ids': [(4, id) for id in self.partner.ids], }) self.assertEqual(compose.partner_ids, self.partner) - compose.send_mail_action() + compose.action_send_mail() def test_followers_meet(self): self.partner.write({'customer': True}) From 34e3c8c6965c03ecf4f34c091f7e64bbb1489229 Mon Sep 17 00:00:00 2001 From: Joan Sisquella Date: Mon, 9 Mar 2020 15:10:18 +0100 Subject: [PATCH 12/36] [IMP] mail_restrict_follower_selection: black, isort --- .../__manifest__.py | 11 +--- .../models/mail_followers.py | 34 +++++++---- .../models/mail_thread.py | 14 +++-- .../models/mail_wizard_invite.py | 37 +++++++----- .../test_mail_restrict_follower_selection.py | 60 ++++++++++--------- 5 files changed, 88 insertions(+), 68 deletions(-) diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index cba1fe639..a2073229a 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -9,12 +9,7 @@ "license": "AGPL-3", "category": "Social Network", "summary": "Define a domain from which followers can be selected", - "depends": [ - 'mail', - ], - "data": [ - "data/ir_config_parameter.xml", - "data/ir_actions.xml", - ], - 'installable': True, + "depends": ["mail"], + "data": ["data/ir_config_parameter.xml", "data/ir_actions.xml"], + "installable": True, } diff --git a/mail_restrict_follower_selection/models/mail_followers.py b/mail_restrict_follower_selection/models/mail_followers.py index c096f1fe5..a19a27eb8 100644 --- a/mail_restrict_follower_selection/models/mail_followers.py +++ b/mail_restrict_follower_selection/models/mail_followers.py @@ -6,23 +6,35 @@ class MailFollowers(models.Model): - _inherit = 'mail.followers' + _inherit = "mail.followers" - def _add_followers(self, res_model, res_ids, partner_ids, partner_subtypes, - channel_ids, channel_subtypes, - check_existing=False, existing_policy='skip'): + def _add_followers( + self, + res_model, + res_ids, + partner_ids, + partner_subtypes, + channel_ids, + channel_subtypes, + check_existing=False, + existing_policy="skip", + ): domain = self.env[ - 'mail.wizard.invite' + "mail.wizard.invite" ]._mail_restrict_follower_selection_get_domain() - partners = self.env['res.partner'].search( - [('id', 'in', partner_ids)] + - safe_eval(domain) + partners = self.env["res.partner"].search( + [("id", "in", partner_ids)] + safe_eval(domain) ) _res_ids = res_ids.copy() or [0] new, update = super()._add_followers( - res_model, res_ids, partners.ids, partner_subtypes, channel_ids, - channel_subtypes, check_existing=check_existing, - existing_policy=existing_policy + res_model, + res_ids, + partners.ids, + partner_subtypes, + channel_ids, + channel_subtypes, + check_existing=check_existing, + existing_policy=existing_policy, ) for res_id in _res_ids: diff --git a/mail_restrict_follower_selection/models/mail_thread.py b/mail_restrict_follower_selection/models/mail_thread.py index c22dd3d41..0bacf177f 100644 --- a/mail_restrict_follower_selection/models/mail_thread.py +++ b/mail_restrict_follower_selection/models/mail_thread.py @@ -3,22 +3,24 @@ class MailThread(models.AbstractModel): - _inherit = 'mail.thread' + _inherit = "mail.thread" @api.multi def _message_add_suggested_recipient( - self, result, partner=None, email=None, reason=''): + self, result, partner=None, email=None, reason="" + ): result = super(MailThread, self)._message_add_suggested_recipient( - result, partner=partner, email=email, reason=reason) + result, partner=partner, email=email, reason=reason + ) domain = self.env[ - 'mail.wizard.invite' + "mail.wizard.invite" ]._mail_restrict_follower_selection_get_domain() eval_domain = safe_eval(domain) for key in result: for partner_id, email, reason in result[key]: if partner_id: - partner = self.env['res.partner'].search( - [('id', '=', partner_id)] + eval_domain + partner = self.env["res.partner"].search( + [("id", "=", partner_id)] + eval_domain ) if not partner: result[key].remove((partner_id, email, reason)) diff --git a/mail_restrict_follower_selection/models/mail_wizard_invite.py b/mail_restrict_follower_selection/models/mail_wizard_invite.py index 1d8b31caa..e04c486cf 100644 --- a/mail_restrict_follower_selection/models/mail_wizard_invite.py +++ b/mail_restrict_follower_selection/models/mail_wizard_invite.py @@ -3,31 +3,38 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from lxml import etree + from odoo import api, models class MailWizardInvite(models.TransientModel): - _inherit = 'mail.wizard.invite' + _inherit = "mail.wizard.invite" @api.model def _mail_restrict_follower_selection_get_domain(self): - parameter_name = 'mail_restrict_follower_selection.domain' - return self.env['ir.config_parameter'].sudo().get_param( - "{0}.{1}".format(parameter_name, - self.env.context.get('default_res_model')), - self.env['ir.config_parameter'].sudo().get_param( - parameter_name, default='[]') + parameter_name = "mail_restrict_follower_selection.domain" + return ( + self.env["ir.config_parameter"] + .sudo() + .get_param( + "{}.{}".format( + parameter_name, self.env.context.get("default_res_model") + ), + self.env["ir.config_parameter"] + .sudo() + .get_param(parameter_name, default="[]"), + ) ) @api.model - def fields_view_get(self, view_id=None, view_type='form', toolbar=False, - submenu=False): + def fields_view_get( + self, view_id=None, view_type="form", toolbar=False, submenu=False + ): result = super(MailWizardInvite, self).fields_view_get( - view_id=view_id, view_type=view_type, toolbar=toolbar, - submenu=submenu) - arch = etree.fromstring(result['arch']) + view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu + ) + arch = etree.fromstring(result["arch"]) for field in arch.xpath('//field[@name="partner_ids"]'): - field.attrib['domain'] = self\ - ._mail_restrict_follower_selection_get_domain() - result['arch'] = etree.tostring(arch) + field.attrib["domain"] = self._mail_restrict_follower_selection_get_domain() + result["arch"] = etree.tostring(arch) return result diff --git a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py index 4eb0bb128..0b78d650c 100644 --- a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py +++ b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py @@ -3,55 +3,59 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from lxml import etree + from odoo.tests.common import TransactionCase class TestMailRestrictFollowerSelection(TransactionCase): - def setUp(self): super().setUp() - self.partner = self.env['res.partner'].create({ - 'name': 'Partner', - 'customer': True, - 'email': 'test@test.com', - }) + self.partner = self.env["res.partner"].create( + {"name": "Partner", "customer": True, "email": "test@test.com"} + ) def test_fields_view_get(self): - result = self.env['mail.wizard.invite'].fields_view_get( - view_type='form') - for field in etree.fromstring(result['arch']).xpath( - '//field[@name="partner_ids"]'): - self.assertTrue(field.get('domain')) + result = self.env["mail.wizard.invite"].fields_view_get(view_type="form") + for field in etree.fromstring(result["arch"]).xpath( + '//field[@name="partner_ids"]' + ): + self.assertTrue(field.get("domain")) def send_action(self): - compose = self.env['mail.compose.message'].with_context({ - 'mail_post_autofollow': True, - 'default_composition_mode': 'comment', - 'default_model': 'res.partner', - 'default_use_active_domain': True, - }).create({ - 'subject': 'From Composer Test', - 'body': '${object.description}', - 'res_id': self.partner.id, - 'partner_ids': [(4, id) for id in self.partner.ids], - }) + compose = ( + self.env["mail.compose.message"] + .with_context( + { + "mail_post_autofollow": True, + "default_composition_mode": "comment", + "default_model": "res.partner", + "default_use_active_domain": True, + } + ) + .create( + { + "subject": "From Composer Test", + "body": "${object.description}", + "res_id": self.partner.id, + "partner_ids": [(4, id) for id in self.partner.ids], + } + ) + ) self.assertEqual(compose.partner_ids, self.partner) compose.action_send_mail() def test_followers_meet(self): - self.partner.write({'customer': True}) + self.partner.write({"customer": True}) self.assertTrue(self.partner.customer) self.send_action() self.assertIn( - self.partner, - self.partner.message_follower_ids.mapped('partner_id') + self.partner, self.partner.message_follower_ids.mapped("partner_id") ) def test_followers_not_meet(self): - self.partner.write({'customer': False}) + self.partner.write({"customer": False}) self.assertFalse(self.partner.customer) self.send_action() self.assertNotIn( - self.partner, - self.partner.message_follower_ids.mapped('partner_id') + self.partner, self.partner.message_follower_ids.mapped("partner_id") ) From 2e35b164dfa9a78ca1ffb34624b1107f9183e17e Mon Sep 17 00:00:00 2001 From: Joan Sisquella Date: Tue, 10 Mar 2020 10:26:49 +0100 Subject: [PATCH 13/36] [MIG] mail_restrict_follower_selection : Migration to 13.0 --- mail_restrict_follower_selection/README.rst | 88 ++-- .../__manifest__.py | 2 +- .../data/ir_config_parameter.xml | 2 +- .../i18n/mail_restrict_follower_selection.pot | 7 +- .../models/mail_thread.py | 3 +- .../readme/CONFIGURE.rst | 11 + .../readme/CONTRIBUTORS.rst | 3 + .../readme/DESCRIPTION.rst | 7 + .../static/description/index.html | 440 ++++++++++++++++++ .../test_mail_restrict_follower_selection.py | 16 +- 10 files changed, 539 insertions(+), 40 deletions(-) create mode 100644 mail_restrict_follower_selection/readme/CONFIGURE.rst create mode 100644 mail_restrict_follower_selection/readme/CONTRIBUTORS.rst create mode 100644 mail_restrict_follower_selection/readme/DESCRIPTION.rst create mode 100644 mail_restrict_follower_selection/static/description/index.html diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst index fb0656d42..e09b1866c 100644 --- a/mail_restrict_follower_selection/README.rst +++ b/mail_restrict_follower_selection/README.rst @@ -1,63 +1,97 @@ -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :alt: License: AGPL-3 - =========================== Restrict follower selection =========================== -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 employees. Otherwise, you'll get a quite crowded list of partners to choose from. - -Moreover, the module disables the option to automatically add followers that do not meet the domain. +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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-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_restrict_follower_selection + :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_restrict_follower_selection + :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 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 employees. Otherwise, +you'll get a quite crowded list of partners to choose from. + +Moreover, the module disables the option to automatically add followers that +do not meet the domain. + +**Table of contents** + +.. contents:: + :local: 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 certain record type (or have different restrictions for different record types), create a parameter `mail_restrict_follower_selection.domain.$your_model`. +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 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 `[('customer', '=', True)]` to allow only customers to be added as follower - this also is the default. +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. Note: This module won't change existing followers! -Usage -===== - -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/205/11.0 - -For further information, please visit: - -* https://www.odoo.com/forum/help-1 - Bug Tracker =========== Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. +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 +~~~~~~~ + +* Therp BV +* Creu Blanca + Contributors ------------- +~~~~~~~~~~~~ * Holger Brunn * Nguyen Tan Phuc * Enric Tobella -Maintainer ----------- +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :target: https://odoo-community.org -This module is maintained by the OCA. - OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit http://odoo-community.org. +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_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index a2073229a..39115020b 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Restrict follower selection", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "author": "Therp BV,Creu Blanca,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", diff --git a/mail_restrict_follower_selection/data/ir_config_parameter.xml b/mail_restrict_follower_selection/data/ir_config_parameter.xml index f4a1daf2e..3602566e3 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 - [('customer', '=', True)] + [('category_id.name', '=', 'Employees')] 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 8a87100bf..535695282 100644 --- a/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot +++ b/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * mail_restrict_follower_selection +# * mail_restrict_follower_selection # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,4 +32,3 @@ msgstr "" #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" msgstr "" - diff --git a/mail_restrict_follower_selection/models/mail_thread.py b/mail_restrict_follower_selection/models/mail_thread.py index 0bacf177f..019307988 100644 --- a/mail_restrict_follower_selection/models/mail_thread.py +++ b/mail_restrict_follower_selection/models/mail_thread.py @@ -1,11 +1,10 @@ -from odoo import api, models +from odoo import models from odoo.tools.safe_eval import safe_eval class MailThread(models.AbstractModel): _inherit = "mail.thread" - @api.multi def _message_add_suggested_recipient( self, result, partner=None, email=None, reason="" ): diff --git a/mail_restrict_follower_selection/readme/CONFIGURE.rst b/mail_restrict_follower_selection/readme/CONFIGURE.rst new file mode 100644 index 000000000..9c233086a --- /dev/null +++ b/mail_restrict_follower_selection/readme/CONFIGURE.rst @@ -0,0 +1,11 @@ +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 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. + +Note: This module won't change existing followers! diff --git a/mail_restrict_follower_selection/readme/CONTRIBUTORS.rst b/mail_restrict_follower_selection/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..47b2b8d31 --- /dev/null +++ b/mail_restrict_follower_selection/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* Holger Brunn +* Nguyen Tan Phuc +* Enric Tobella diff --git a/mail_restrict_follower_selection/readme/DESCRIPTION.rst b/mail_restrict_follower_selection/readme/DESCRIPTION.rst new file mode 100644 index 000000000..d8867e560 --- /dev/null +++ b/mail_restrict_follower_selection/readme/DESCRIPTION.rst @@ -0,0 +1,7 @@ +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 employees. Otherwise, +you'll get a quite crowded list of partners to choose from. + +Moreover, the module disables the option to automatically add followers that +do not meet the domain. diff --git a/mail_restrict_follower_selection/static/description/index.html b/mail_restrict_follower_selection/static/description/index.html new file mode 100644 index 000000000..49f07278f --- /dev/null +++ b/mail_restrict_follower_selection/static/description/index.html @@ -0,0 +1,440 @@ + + + + + + +Restrict follower selection + + + +
+

Restrict follower selection

+ + +

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

+

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 employees. Otherwise, +you’ll get a quite crowded list of partners to choose from.

+

Moreover, the module disables the option to automatically add followers that +do not meet the domain.

+

Table of contents

+ +
+

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

+

Note: This module won’t change existing followers!

+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Therp BV
  • +
  • Creu Blanca
  • +
+
+
+

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_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py index 0b78d650c..c4ce705d8 100644 --- a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py +++ b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py @@ -10,8 +10,16 @@ class TestMailRestrictFollowerSelection(TransactionCase): def setUp(self): super().setUp() + self.category_employees = self.env["res.partner.category"].create( + {"name": "Employees"} + ) + self.partner = self.env["res.partner"].create( - {"name": "Partner", "customer": True, "email": "test@test.com"} + { + "name": "Partner", + "category_id": self.category_employees, + "email": "test@test.com", + } ) def test_fields_view_get(self): @@ -45,16 +53,14 @@ def send_action(self): compose.action_send_mail() def test_followers_meet(self): - self.partner.write({"customer": True}) - self.assertTrue(self.partner.customer) + self.partner.write({"category_id": self.category_employees}) self.send_action() self.assertIn( self.partner, self.partner.message_follower_ids.mapped("partner_id") ) def test_followers_not_meet(self): - self.partner.write({"customer": False}) - self.assertFalse(self.partner.customer) + self.partner.write({"category_id": False}) self.send_action() self.assertNotIn( self.partner, self.partner.message_follower_ids.mapped("partner_id") From 83fa826662037311f4ae1313329e2ab0d0ea7a1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=C3=ADaz?= Date: Wed, 15 Apr 2020 20:47:58 +0200 Subject: [PATCH 14/36] [IMP] mail_restrict_follower_selection: Add condition for tests --- mail_restrict_follower_selection/__manifest__.py | 2 +- mail_restrict_follower_selection/models/mail_thread.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index 39115020b..73feb2d54 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Restrict follower selection", - "version": "13.0.1.0.0", + "version": "13.0.1.0.1", "author": "Therp BV,Creu Blanca,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", diff --git a/mail_restrict_follower_selection/models/mail_thread.py b/mail_restrict_follower_selection/models/mail_thread.py index 019307988..65e616ae8 100644 --- a/mail_restrict_follower_selection/models/mail_thread.py +++ b/mail_restrict_follower_selection/models/mail_thread.py @@ -1,4 +1,5 @@ from odoo import models +from odoo.tools import config from odoo.tools.safe_eval import safe_eval @@ -11,6 +12,11 @@ def _message_add_suggested_recipient( result = super(MailThread, self)._message_add_suggested_recipient( result, partner=partner, email=email, reason=reason ) + test_condition = config["test_enable"] and not self.env.context.get( + "test_restrict_follower" + ) + if test_condition or self.env.context.get("no_restrict_follower"): + return result domain = self.env[ "mail.wizard.invite" ]._mail_restrict_follower_selection_get_domain() From 12ed914da66fb8065b27cd4edcd88f79fc98c412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=C3=ADaz?= Date: Thu, 16 Apr 2020 19:49:05 +0200 Subject: [PATCH 15/36] [IMP] mail_restrict_follower_selection: Add condition for tests --- mail_restrict_follower_selection/__manifest__.py | 2 +- mail_restrict_follower_selection/models/mail_thread.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index 73feb2d54..aa6f46a40 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Restrict follower selection", - "version": "13.0.1.0.1", + "version": "13.0.1.0.2", "author": "Therp BV,Creu Blanca,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", diff --git a/mail_restrict_follower_selection/models/mail_thread.py b/mail_restrict_follower_selection/models/mail_thread.py index 65e616ae8..6b1201bd8 100644 --- a/mail_restrict_follower_selection/models/mail_thread.py +++ b/mail_restrict_follower_selection/models/mail_thread.py @@ -9,7 +9,7 @@ class MailThread(models.AbstractModel): def _message_add_suggested_recipient( self, result, partner=None, email=None, reason="" ): - result = super(MailThread, self)._message_add_suggested_recipient( + result = super()._message_add_suggested_recipient( result, partner=partner, email=email, reason=reason ) test_condition = config["test_enable"] and not self.env.context.get( From b644b319fbb2b4771b854f7e690a417e495e9515 Mon Sep 17 00:00:00 2001 From: Alessandro Fiorino Date: Thu, 3 Dec 2020 15:52:39 +0000 Subject: [PATCH 16/36] Translated using Weblate (Italian) Currently translated at 75.0% (3 of 4 strings) Translation: social-13.0/social-13.0-mail_restrict_follower_selection Translate-URL: https://translation.odoo-community.org/projects/social-13-0/social-13-0-mail_restrict_follower_selection/it/ --- mail_restrict_follower_selection/i18n/it.po | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mail_restrict_follower_selection/i18n/it.po b/mail_restrict_follower_selection/i18n/it.po index 54ec814bb..4e2da33c4 100644 --- a/mail_restrict_follower_selection/i18n/it.po +++ b/mail_restrict_follower_selection/i18n/it.po @@ -9,14 +9,15 @@ msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-05-17 01:02+0000\n" -"PO-Revision-Date: 2017-05-17 01:02+0000\n" -"Last-Translator: Marius Marolla , 2017\n" +"PO-Revision-Date: 2020-12-03 18:36+0000\n" +"Last-Translator: Alessandro Fiorino \n" "Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" #. module: mail_restrict_follower_selection #: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup @@ -26,7 +27,7 @@ msgstr "Imposta restrizioni sui follower" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers msgid "Document Followers" -msgstr "" +msgstr "Follower Documento" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread From 7eccc81368c3fd2dff68ac6d9bc6056d5857484b Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Tue, 26 Jan 2021 14:06:17 +0000 Subject: [PATCH 17/36] [IMP] pre-commit run -a --- mail_restrict_follower_selection/data/ir_actions.xml | 10 +++++++--- .../data/ir_config_parameter.xml | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/mail_restrict_follower_selection/data/ir_actions.xml b/mail_restrict_follower_selection/data/ir_actions.xml index 63c84f024..c41dbab2a 100644 --- a/mail_restrict_follower_selection/data/ir_actions.xml +++ b/mail_restrict_follower_selection/data/ir_actions.xml @@ -1,7 +1,11 @@ - + - + diff --git a/mail_restrict_follower_selection/data/ir_config_parameter.xml b/mail_restrict_follower_selection/data/ir_config_parameter.xml index 3602566e3..6c356d705 100644 --- a/mail_restrict_follower_selection/data/ir_config_parameter.xml +++ b/mail_restrict_follower_selection/data/ir_config_parameter.xml @@ -1,4 +1,4 @@ - + mail_restrict_follower_selection.domain From 8d06a4c0f2c340b3d0d14edc0f1ca992c28795b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20D=2E=20D=C3=ADaz?= Date: Tue, 26 Jan 2021 17:37:52 +0100 Subject: [PATCH 18/36] [IMP] Apply pre-commit changes: Resolve conflicts --- mail_restrict_follower_selection/__manifest__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index aa6f46a40..1a5353256 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -8,6 +8,7 @@ "author": "Therp BV,Creu Blanca,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", + "website": "https://github.com/OCA/social", "summary": "Define a domain from which followers can be selected", "depends": ["mail"], "data": ["data/ir_config_parameter.xml", "data/ir_actions.xml"], From 43d12b27016d188b00f6696c495ed6258da3ad3c Mon Sep 17 00:00:00 2001 From: Olga Marco Date: Thu, 30 Dec 2021 13:33:52 +0100 Subject: [PATCH 19/36] [MIG] mail_restrict_follower_selection: Migration to 14.0 --- mail_restrict_follower_selection/__manifest__.py | 2 +- .../data/ir_actions.xml | 11 ++++------- .../models/mail_followers.py | 15 +++++++++++++++ .../test_mail_restrict_follower_selection.py | 13 ++++++------- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index 1a5353256..2fed8a5b3 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Restrict follower selection", - "version": "13.0.1.0.2", + "version": "14.0.1.0.0", "author": "Therp BV,Creu Blanca,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", diff --git a/mail_restrict_follower_selection/data/ir_actions.xml b/mail_restrict_follower_selection/data/ir_actions.xml index c41dbab2a..59478e10b 100644 --- a/mail_restrict_follower_selection/data/ir_actions.xml +++ b/mail_restrict_follower_selection/data/ir_actions.xml @@ -1,13 +1,10 @@ - - + + Configure the restriction on followers + ir.config_parameter + form Configure the restriction on followers diff --git a/mail_restrict_follower_selection/models/mail_followers.py b/mail_restrict_follower_selection/models/mail_followers.py index a19a27eb8..06a9aaaf4 100644 --- a/mail_restrict_follower_selection/models/mail_followers.py +++ b/mail_restrict_follower_selection/models/mail_followers.py @@ -2,6 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import models +from odoo.tools import config from odoo.tools.safe_eval import safe_eval @@ -19,6 +20,20 @@ def _add_followers( check_existing=False, existing_policy="skip", ): + test_condition = config["test_enable"] and not self.env.context.get( + "test_restrict_follower" + ) + if test_condition or self.env.context.get("no_restrict_follower"): + return super()._add_followers( + res_model, + res_ids, + partner_ids, + partner_subtypes, + channel_ids, + channel_subtypes, + check_existing=check_existing, + existing_policy=existing_policy, + ) domain = self.env[ "mail.wizard.invite" ]._mail_restrict_follower_selection_get_domain() diff --git a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py index c4ce705d8..980656955 100644 --- a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py +++ b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py @@ -33,12 +33,11 @@ def send_action(self): compose = ( self.env["mail.compose.message"] .with_context( - { - "mail_post_autofollow": True, - "default_composition_mode": "comment", - "default_model": "res.partner", - "default_use_active_domain": True, - } + mail_post_autofollow=True, + default_composition_mode="comment", + default_model="res.partner", + default_use_active_domain=True, + test_restrict_follower=True, ) .create( { @@ -50,7 +49,7 @@ def send_action(self): ) ) self.assertEqual(compose.partner_ids, self.partner) - compose.action_send_mail() + compose.send_mail() def test_followers_meet(self): self.partner.write({"category_id": self.category_employees}) From 225e98a714abcf756e40d9c638ba39ba12b7a979 Mon Sep 17 00:00:00 2001 From: Enrique Date: Thu, 2 Jan 2020 13:45:13 +0100 Subject: [PATCH 20/36] [FIX] mail_restrict_follower_selection: res_model not always in context When creating a record from a record from another model, the model is not in the context (`default_res_model` key). For example: creating an invoice from a sale order. --- .../models/mail_followers.py | 9 ++++---- .../models/mail_wizard_invite.py | 22 ++++++++----------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/mail_restrict_follower_selection/models/mail_followers.py b/mail_restrict_follower_selection/models/mail_followers.py index 06a9aaaf4..3576e1552 100644 --- a/mail_restrict_follower_selection/models/mail_followers.py +++ b/mail_restrict_follower_selection/models/mail_followers.py @@ -35,10 +35,11 @@ def _add_followers( existing_policy=existing_policy, ) domain = self.env[ - "mail.wizard.invite" - ]._mail_restrict_follower_selection_get_domain() - partners = self.env["res.partner"].search( - [("id", "in", partner_ids)] + safe_eval(domain) + 'mail.wizard.invite' + ]._mail_restrict_follower_selection_get_domain(res_model=res_model) + partners = self.env['res.partner'].search( + [('id', 'in', partner_ids)] + + safe_eval(domain) ) _res_ids = res_ids.copy() or [0] new, update = super()._add_followers( diff --git a/mail_restrict_follower_selection/models/mail_wizard_invite.py b/mail_restrict_follower_selection/models/mail_wizard_invite.py index e04c486cf..0d579f785 100644 --- a/mail_restrict_follower_selection/models/mail_wizard_invite.py +++ b/mail_restrict_follower_selection/models/mail_wizard_invite.py @@ -11,19 +11,15 @@ class MailWizardInvite(models.TransientModel): _inherit = "mail.wizard.invite" @api.model - def _mail_restrict_follower_selection_get_domain(self): - parameter_name = "mail_restrict_follower_selection.domain" - return ( - self.env["ir.config_parameter"] - .sudo() - .get_param( - "{}.{}".format( - parameter_name, self.env.context.get("default_res_model") - ), - self.env["ir.config_parameter"] - .sudo() - .get_param(parameter_name, default="[]"), - ) + def _mail_restrict_follower_selection_get_domain(self, res_model=None): + if not res_model: + res_model = self.env.context.get('default_res_model') + parameter_name = 'mail_restrict_follower_selection.domain' + return self.env['ir.config_parameter'].sudo().get_param( + "{0}.{1}".format(parameter_name, + res_model), + self.env['ir.config_parameter'].sudo().get_param( + parameter_name, default='[]') ) @api.model From e557ef309d3e5dc2c91d1a110986023c3df3efb6 Mon Sep 17 00:00:00 2001 From: angelmoya Date: Tue, 22 Dec 2020 10:18:50 +0100 Subject: [PATCH 21/36] [IMP] mail_restrict_follower_selection: Adding tests and improving pre-commit --- mail_restrict_follower_selection/README.rst | 10 ++++---- mail_restrict_follower_selection/i18n/de.po | 21 +++++++++++++++++ mail_restrict_follower_selection/i18n/fr.po | 21 +++++++++++++++++ mail_restrict_follower_selection/i18n/hr.po | 21 +++++++++++++++++ mail_restrict_follower_selection/i18n/it.po | 21 +++++++++++++++++ .../i18n/mail_restrict_follower_selection.pot | 23 ++++++++++++++++++- mail_restrict_follower_selection/i18n/sl.po | 21 +++++++++++++++++ .../models/mail_followers.py | 7 +++--- .../models/mail_wizard_invite.py | 18 +++++++++------ .../static/description/index.html | 6 ++--- .../test_mail_restrict_follower_selection.py | 16 +++++++++++++ 11 files changed, 165 insertions(+), 20 deletions(-) diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst index e09b1866c..fa09fa36f 100644 --- a/mail_restrict_follower_selection/README.rst +++ b/mail_restrict_follower_selection/README.rst @@ -14,13 +14,13 @@ Restrict follower selection :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_restrict_follower_selection + :target: https://github.com/OCA/social/tree/14.0/mail_restrict_follower_selection :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_restrict_follower_selection + :target: https://translation.odoo-community.org/projects/social-14-0/social-14-0-mail_restrict_follower_selection :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| @@ -59,7 +59,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. @@ -92,6 +92,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_restrict_follower_selection/i18n/de.po b/mail_restrict_follower_selection/i18n/de.po index eff22263f..953f26eff 100644 --- a/mail_restrict_follower_selection/i18n/de.po +++ b/mail_restrict_follower_selection/i18n/de.po @@ -21,6 +21,13 @@ msgstr "" msgid "Configure the restriction on followers" msgstr "Beschränkung der Abonnenten konfigurieren" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__display_name +msgid "Display Name" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers msgid "Document Followers" @@ -31,7 +38,21 @@ msgstr "Abonnenten des Dokuments" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__id +msgid "ID" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" msgstr "Assistent zum Einladen von Abonnenten" + +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite____last_update +msgid "Last Modified on" +msgstr "" diff --git a/mail_restrict_follower_selection/i18n/fr.po b/mail_restrict_follower_selection/i18n/fr.po index 7f96c92b0..545f0b10c 100644 --- a/mail_restrict_follower_selection/i18n/fr.po +++ b/mail_restrict_follower_selection/i18n/fr.po @@ -24,6 +24,13 @@ msgstr "" msgid "Configure the restriction on followers" msgstr "Configurer les restrictions sur les abonnés" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__display_name +msgid "Display Name" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers msgid "Document Followers" @@ -34,7 +41,21 @@ msgstr "Suiveurs du document" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__id +msgid "ID" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" msgstr "Assistant d'invitation" + +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite____last_update +msgid "Last Modified on" +msgstr "" diff --git a/mail_restrict_follower_selection/i18n/hr.po b/mail_restrict_follower_selection/i18n/hr.po index 38a74e130..da6cfb42a 100644 --- a/mail_restrict_follower_selection/i18n/hr.po +++ b/mail_restrict_follower_selection/i18n/hr.po @@ -24,6 +24,13 @@ msgstr "" msgid "Configure the restriction on followers" msgstr "Postavi ograničenja na pratitelje" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__display_name +msgid "Display Name" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers msgid "Document Followers" @@ -34,7 +41,21 @@ msgstr "" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__id +msgid "ID" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" msgstr "Čarobnjak za pozivnce" + +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite____last_update +msgid "Last Modified on" +msgstr "" diff --git a/mail_restrict_follower_selection/i18n/it.po b/mail_restrict_follower_selection/i18n/it.po index 4e2da33c4..22960b3c3 100644 --- a/mail_restrict_follower_selection/i18n/it.po +++ b/mail_restrict_follower_selection/i18n/it.po @@ -24,6 +24,13 @@ msgstr "" msgid "Configure the restriction on followers" msgstr "Imposta restrizioni sui follower" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__display_name +msgid "Display Name" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers msgid "Document Followers" @@ -34,7 +41,21 @@ msgstr "Follower Documento" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__id +msgid "ID" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" msgstr "Wizard Creazione Invito" + +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite____last_update +msgid "Last Modified on" +msgstr "" 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 535695282..f89348394 100644 --- a/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.pot +++ b/mail_restrict_follower_selection/i18n/mail_restrict_follower_selection.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" @@ -18,6 +18,13 @@ msgstr "" msgid "Configure the restriction on followers" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__display_name +msgid "Display Name" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers msgid "Document Followers" @@ -28,7 +35,21 @@ msgstr "" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__id +msgid "ID" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" msgstr "" + +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite____last_update +msgid "Last Modified on" +msgstr "" diff --git a/mail_restrict_follower_selection/i18n/sl.po b/mail_restrict_follower_selection/i18n/sl.po index b350b0264..c6e049a7a 100644 --- a/mail_restrict_follower_selection/i18n/sl.po +++ b/mail_restrict_follower_selection/i18n/sl.po @@ -25,6 +25,13 @@ msgstr "" msgid "Configure the restriction on followers" msgstr "Nastavitev omejitev za sledilce" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__display_name +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__display_name +msgid "Display Name" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers msgid "Document Followers" @@ -35,7 +42,21 @@ msgstr "" msgid "Email Thread" msgstr "" +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__id +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__id +msgid "ID" +msgstr "" + #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite msgid "Invite wizard" msgstr "Čarovnik za vabila" + +#. module: mail_restrict_follower_selection +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread____last_update +#: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite____last_update +msgid "Last Modified on" +msgstr "" diff --git a/mail_restrict_follower_selection/models/mail_followers.py b/mail_restrict_follower_selection/models/mail_followers.py index 3576e1552..30ca69c79 100644 --- a/mail_restrict_follower_selection/models/mail_followers.py +++ b/mail_restrict_follower_selection/models/mail_followers.py @@ -35,11 +35,10 @@ def _add_followers( existing_policy=existing_policy, ) domain = self.env[ - 'mail.wizard.invite' + "mail.wizard.invite" ]._mail_restrict_follower_selection_get_domain(res_model=res_model) - partners = self.env['res.partner'].search( - [('id', 'in', partner_ids)] + - safe_eval(domain) + partners = self.env["res.partner"].search( + [("id", "in", partner_ids)] + safe_eval(domain) ) _res_ids = res_ids.copy() or [0] new, update = super()._add_followers( diff --git a/mail_restrict_follower_selection/models/mail_wizard_invite.py b/mail_restrict_follower_selection/models/mail_wizard_invite.py index 0d579f785..9434f1581 100644 --- a/mail_restrict_follower_selection/models/mail_wizard_invite.py +++ b/mail_restrict_follower_selection/models/mail_wizard_invite.py @@ -13,13 +13,17 @@ class MailWizardInvite(models.TransientModel): @api.model def _mail_restrict_follower_selection_get_domain(self, res_model=None): if not res_model: - res_model = self.env.context.get('default_res_model') - parameter_name = 'mail_restrict_follower_selection.domain' - return self.env['ir.config_parameter'].sudo().get_param( - "{0}.{1}".format(parameter_name, - res_model), - self.env['ir.config_parameter'].sudo().get_param( - parameter_name, default='[]') + res_model = self.env.context.get("default_res_model") + parameter_name = "mail_restrict_follower_selection.domain" + return ( + self.env["ir.config_parameter"] + .sudo() + .get_param( + "{}.{}".format(parameter_name, res_model), + self.env["ir.config_parameter"] + .sudo() + .get_param(parameter_name, default="[]"), + ) ) @api.model diff --git a/mail_restrict_follower_selection/static/description/index.html b/mail_restrict_follower_selection/static/description/index.html index 49f07278f..5b5b44fbb 100644 --- a/mail_restrict_follower_selection/static/description/index.html +++ b/mail_restrict_follower_selection/static/description/index.html @@ -367,7 +367,7 @@

Restrict follower selection

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

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

+

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

This module 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 employees. Otherwise, @@ -404,7 +404,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.

@@ -431,7 +431,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

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

+

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

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

diff --git a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py index 980656955..e8bf0565c 100644 --- a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py +++ b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py @@ -64,3 +64,19 @@ def test_followers_not_meet(self): self.assertNotIn( self.partner, self.partner.message_follower_ids.mapped("partner_id") ) + + def test_message_add_suggested_recipient(self): + res = self.partner.with_context( + test_restrict_follower=True + )._message_add_suggested_recipient({self.partner.id: []}, partner=self.partner) + self.assertEqual(res[self.partner.id][0][0], self.partner.id) + self.env["ir.config_parameter"].create( + { + "key": "mail_restrict_follower_selection.domain.res.partner", + "value": "[('category_id.name', '!=', 'Employees')]", + } + ) + new_res = self.partner.with_context( + test_restrict_follower=True + )._message_add_suggested_recipient({self.partner.id: []}) + self.assertFalse(new_res[self.partner.id][0][0]) From 754da87386b70f0e4e21c9e1aabbe08dcc25754e Mon Sep 17 00:00:00 2001 From: Francesco Foresti Date: Fri, 18 Nov 2022 11:15:53 +0000 Subject: [PATCH 22/36] Translated using Weblate (Italian) Currently translated at 100.0% (7 of 7 strings) Translation: social-14.0/social-14.0-mail_restrict_follower_selection Translate-URL: https://translation.odoo-community.org/projects/social-14-0/social-14-0-mail_restrict_follower_selection/it/ --- mail_restrict_follower_selection/i18n/en.po | 39 --------------------- mail_restrict_follower_selection/i18n/it.po | 14 ++++---- 2 files changed, 7 insertions(+), 46 deletions(-) delete mode 100644 mail_restrict_follower_selection/i18n/en.po diff --git a/mail_restrict_follower_selection/i18n/en.po b/mail_restrict_follower_selection/i18n/en.po deleted file mode 100644 index e03abf358..000000000 --- a/mail_restrict_follower_selection/i18n/en.po +++ /dev/null @@ -1,39 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * mail_restrict_follower_selection -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: social (8.0)\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-30 16:56+0000\n" -"PO-Revision-Date: 2015-09-30 16:56+0000\n" -"Last-Translator: OCA Transbot \n" -"Language-Team: English (http://www.transifex.com/oca/OCA-social-8-0/language/" -"en/)\n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. module: mail_restrict_follower_selection -#: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup -msgid "Configure the restriction on followers" -msgstr "Configure the restriction on followers" - -#. module: mail_restrict_follower_selection -#: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers -msgid "Document Followers" -msgstr "" - -#. module: mail_restrict_follower_selection -#: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread -msgid "Email Thread" -msgstr "" - -#. module: mail_restrict_follower_selection -#: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite -msgid "Invite wizard" -msgstr "Invite wizard" diff --git a/mail_restrict_follower_selection/i18n/it.po b/mail_restrict_follower_selection/i18n/it.po index 22960b3c3..d811a5085 100644 --- a/mail_restrict_follower_selection/i18n/it.po +++ b/mail_restrict_follower_selection/i18n/it.po @@ -9,15 +9,15 @@ msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-05-17 01:02+0000\n" -"PO-Revision-Date: 2020-12-03 18:36+0000\n" -"Last-Translator: Alessandro Fiorino \n" +"PO-Revision-Date: 2022-11-18 13:44+0000\n" +"Last-Translator: Francesco Foresti \n" "Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10\n" +"X-Generator: Weblate 4.14.1\n" #. module: mail_restrict_follower_selection #: model:ir.actions.act_window,name:mail_restrict_follower_selection.action_setup @@ -29,7 +29,7 @@ msgstr "Imposta restrizioni sui follower" #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__display_name #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__display_name msgid "Display Name" -msgstr "" +msgstr "Nome da visualizzare" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_followers @@ -39,14 +39,14 @@ msgstr "Follower Documento" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_thread msgid "Email Thread" -msgstr "" +msgstr "Discussione Email" #. module: mail_restrict_follower_selection #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_followers__id #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread__id #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite__id msgid "ID" -msgstr "" +msgstr "ID" #. module: mail_restrict_follower_selection #: model:ir.model,name:mail_restrict_follower_selection.model_mail_wizard_invite @@ -58,4 +58,4 @@ msgstr "Wizard Creazione Invito" #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_thread____last_update #: model:ir.model.fields,field_description:mail_restrict_follower_selection.field_mail_wizard_invite____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" From baf504f1723a2fd63fd7af9715a7d42bf7ab36ff Mon Sep 17 00:00:00 2001 From: Aungkokolin1997 Date: Thu, 15 Sep 2022 09:43:33 +0630 Subject: [PATCH 23/36] [15.0][MIG] mail_restrict_follower_selection: Migration to 15.0 --- mail_restrict_follower_selection/README.rst | 10 +++++----- mail_restrict_follower_selection/__manifest__.py | 2 +- .../models/mail_followers.py | 12 +++--------- .../static/description/index.html | 8 ++++---- .../tests/test_mail_restrict_follower_selection.py | 2 +- 5 files changed, 14 insertions(+), 20 deletions(-) diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst index fa09fa36f..5396f0e2e 100644 --- a/mail_restrict_follower_selection/README.rst +++ b/mail_restrict_follower_selection/README.rst @@ -14,13 +14,13 @@ Restrict follower selection :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/14.0/mail_restrict_follower_selection + :target: https://github.com/OCA/social/tree/15.0/mail_restrict_follower_selection :alt: OCA/social .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/social-14-0/social-14-0-mail_restrict_follower_selection + :target: https://translation.odoo-community.org/projects/social-15-0/social-15-0-mail_restrict_follower_selection :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/14.0 + :target: https://runbot.odoo-community.org/runbot/205/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -59,7 +59,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. @@ -92,6 +92,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_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index 2fed8a5b3..26ba3fd34 100644 --- a/mail_restrict_follower_selection/__manifest__.py +++ b/mail_restrict_follower_selection/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Restrict follower selection", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "author": "Therp BV,Creu Blanca,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", diff --git a/mail_restrict_follower_selection/models/mail_followers.py b/mail_restrict_follower_selection/models/mail_followers.py index 30ca69c79..296349249 100644 --- a/mail_restrict_follower_selection/models/mail_followers.py +++ b/mail_restrict_follower_selection/models/mail_followers.py @@ -14,9 +14,7 @@ def _add_followers( res_model, res_ids, partner_ids, - partner_subtypes, - channel_ids, - channel_subtypes, + subtypes, check_existing=False, existing_policy="skip", ): @@ -28,9 +26,7 @@ def _add_followers( res_model, res_ids, partner_ids, - partner_subtypes, - channel_ids, - channel_subtypes, + subtypes, check_existing=check_existing, existing_policy=existing_policy, ) @@ -45,9 +41,7 @@ def _add_followers( res_model, res_ids, partners.ids, - partner_subtypes, - channel_ids, - channel_subtypes, + subtypes, check_existing=check_existing, existing_policy=existing_policy, ) diff --git a/mail_restrict_follower_selection/static/description/index.html b/mail_restrict_follower_selection/static/description/index.html index 5b5b44fbb..062f7e357 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 -
-

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,20 +396,27 @@

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 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!

-

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 @@ -412,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 @@ -446,5 +458,6 @@

Maintainers

+
From 306b700196c2603412bb6133c0cb56980f6e8860 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 16 Feb 2026 12:37:30 +0000 Subject: [PATCH 34/36] 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 e194fabff5f162928c9c5d25d4baaacc8945be74 Mon Sep 17 00:00:00 2001 From: MJD Date: Tue, 17 Feb 2026 10:09:22 +0000 Subject: [PATCH 35/36] 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 7a767069ec076ec8370224e6767c699be850e90c Mon Sep 17 00:00:00 2001 From: Christopher Rogos Date: Thu, 16 Apr 2026 21:48:00 +0000 Subject: [PATCH 36/36] [MIG] mail_restrict_follower_selection: Migration to 19.0 --- mail_restrict_follower_selection/README.rst | 36 +++++----- mail_restrict_follower_selection/__init__.py | 1 + .../__manifest__.py | 2 +- .../data/ir_actions.xml | 4 -- .../models/__init__.py | 2 - .../models/mail_followers.py | 59 ---------------- .../models/mail_thread.py | 37 +--------- .../readme/CONTRIBUTORS.md | 1 + .../static/description/index.html | 7 +- .../test_mail_restrict_follower_selection.py | 68 +++++-------------- .../wizard/__init__.py | 5 ++ .../mail_followers_edit.py} | 28 ++++++-- 12 files changed, 73 insertions(+), 177 deletions(-) delete mode 100644 mail_restrict_follower_selection/models/mail_followers.py create mode 100644 mail_restrict_follower_selection/wizard/__init__.py rename mail_restrict_follower_selection/{models/mail_wizard_invite.py => wizard/mail_followers_edit.py} (59%) diff --git a/mail_restrict_follower_selection/README.rst b/mail_restrict_follower_selection/README.rst index 37ffb0653..61d3e455f 100644 --- a/mail_restrict_follower_selection/README.rst +++ b/mail_restrict_follower_selection/README.rst @@ -21,13 +21,13 @@ Restrict follower selection :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 - :target: https://github.com/OCA/mail/tree/18.0/mail_restrict_follower_selection + :target: https://github.com/OCA/mail/tree/19.0/mail_restrict_follower_selection :alt: OCA/mail .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/mail-18-0/mail-18-0-mail_restrict_follower_selection + :target: https://translation.odoo-community.org/projects/mail-19-0/mail-19-0-mail_restrict_follower_selection :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/mail&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/mail&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -58,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! @@ -74,7 +74,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. @@ -90,12 +90,14 @@ 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 + +- Christopher Rogos Maintainers ----------- @@ -110,6 +112,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/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_restrict_follower_selection/__init__.py b/mail_restrict_follower_selection/__init__.py index 52c9640c7..aef37242c 100644 --- a/mail_restrict_follower_selection/__init__.py +++ b/mail_restrict_follower_selection/__init__.py @@ -4,3 +4,4 @@ from . import models from . import utils +from . import wizard diff --git a/mail_restrict_follower_selection/__manifest__.py b/mail_restrict_follower_selection/__manifest__.py index c31f31f6c..b546a0b33 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.1.0", + "version": "19.0.1.0.0", "author": "Therp BV,Creu Blanca,Odoo Community Association (OCA)", "license": "AGPL-3", "category": "Social Network", diff --git a/mail_restrict_follower_selection/data/ir_actions.xml b/mail_restrict_follower_selection/data/ir_actions.xml index 59478e10b..f046c6306 100644 --- a/mail_restrict_follower_selection/data/ir_actions.xml +++ b/mail_restrict_follower_selection/data/ir_actions.xml @@ -6,8 +6,4 @@ form
- - Configure the restriction on followers - -
diff --git a/mail_restrict_follower_selection/models/__init__.py b/mail_restrict_follower_selection/models/__init__.py index d6a528cb7..9407d485b 100644 --- a/mail_restrict_follower_selection/models/__init__.py +++ b/mail_restrict_follower_selection/models/__init__.py @@ -2,6 +2,4 @@ # Copyright (C) 2017 Komit # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from . import mail_followers -from . import mail_wizard_invite from . import mail_thread diff --git a/mail_restrict_follower_selection/models/mail_followers.py b/mail_restrict_follower_selection/models/mail_followers.py deleted file mode 100644 index 9b942bb66..000000000 --- a/mail_restrict_follower_selection/models/mail_followers.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright (C) 2018 Creu Blanca -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import models -from odoo.tools import config -from odoo.tools.safe_eval import safe_eval - -from ..utils import _id_get - - -class MailFollowers(models.Model): - _inherit = "mail.followers" - - def _add_followers( - self, - res_model, - res_ids, - partner_ids, - subtypes, - check_existing=False, - existing_policy="skip", - ): - test_condition = config["test_enable"] and not self.env.context.get( - "test_restrict_follower" - ) - if test_condition or self.env.context.get("no_restrict_follower"): - return super()._add_followers( - res_model, - res_ids, - partner_ids, - subtypes, - check_existing=check_existing, - existing_policy=existing_policy, - ) - domain = str( - self.env["mail.wizard.invite"]._mail_restrict_follower_selection_get_domain( - res_model=res_model - ) - ) - partners = self.env["res.partner"].search( - [("id", "in", partner_ids)] - + safe_eval( - domain, locals_dict={"ref": lambda str_id: _id_get(self.env, str_id)} - ) - ) - _res_ids = res_ids.copy() or [0] - new, update = super()._add_followers( - res_model, - res_ids, - partners.ids, - subtypes, - check_existing=check_existing, - existing_policy=existing_policy, - ) - - for res_id in _res_ids: - if res_id not in new: - new.setdefault(res_id, list()) - return new, update diff --git a/mail_restrict_follower_selection/models/mail_thread.py b/mail_restrict_follower_selection/models/mail_thread.py index c12f19b1b..0ea985544 100644 --- a/mail_restrict_follower_selection/models/mail_thread.py +++ b/mail_restrict_follower_selection/models/mail_thread.py @@ -1,8 +1,4 @@ from odoo import fields, models -from odoo.tools import config -from odoo.tools.safe_eval import safe_eval - -from ..utils import _id_get class MailThread(models.AbstractModel): @@ -10,37 +6,6 @@ class MailThread(models.AbstractModel): message_partner_ids = fields.Many2many( domain=lambda thread: thread.env[ - "mail.wizard.invite" + "mail.followers.edit" ]._mail_restrict_follower_selection_get_domain(thread._name) ) - - def _message_add_suggested_recipient( - self, result, partner=None, email=None, lang=None, reason="" - ): - result = super()._message_add_suggested_recipient( - result, partner=partner, email=email, lang=lang, reason=reason - ) - test_condition = config["test_enable"] and not self.env.context.get( - "test_restrict_follower" - ) - if test_condition or self.env.context.get("no_restrict_follower"): - return result - domain = self.env[ - "mail.wizard.invite" - ]._mail_restrict_follower_selection_get_domain() - eval_domain = safe_eval( - str(domain), locals_dict={"ref": lambda str_id: _id_get(self.env, str_id)} - ) - items_to_remove = [] - for item in result: - partner_id = item.get("partner_id", False) - if partner_id: - partner_count = self.env["res.partner"].search_count( - [("id", "=", partner_id)] + eval_domain - ) - if not partner_count: - items_to_remove.append(item) - for item in items_to_remove: - result.remove(item) - - return result diff --git a/mail_restrict_follower_selection/readme/CONTRIBUTORS.md b/mail_restrict_follower_selection/readme/CONTRIBUTORS.md index f70ff5819..2bbe6b1e3 100644 --- a/mail_restrict_follower_selection/readme/CONTRIBUTORS.md +++ b/mail_restrict_follower_selection/readme/CONTRIBUTORS.md @@ -3,3 +3,4 @@ - Enric Tobella \<\> - [Quartile](https://www.quartile.co): - Aung Ko Ko Lin +- Christopher Rogos \<\> diff --git a/mail_restrict_follower_selection/static/description/index.html b/mail_restrict_follower_selection/static/description/index.html index e4d340ef2..de9160788 100644 --- a/mail_restrict_follower_selection/static/description/index.html +++ b/mail_restrict_follower_selection/static/description/index.html @@ -374,7 +374,7 @@

Restrict follower selection

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:976e9e65a681e7157cb433ca47a19013011496fa891bf180c564616589f0d470 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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 @@ -420,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.

@@ -442,6 +442,7 @@

Contributors

  • Aung Ko Ko Lin
  • +
  • Christopher Rogos <crogos@gmail.com>
  • @@ -453,7 +454,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/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_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py index e01f50e9d..384cde36f 100644 --- a/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py +++ b/mail_restrict_follower_selection/tests/test_mail_restrict_follower_selection.py @@ -4,7 +4,7 @@ from lxml import etree -from odoo.tests.common import TransactionCase +from odoo.tests.common import Command, TransactionCase class TestMailRestrictFollowerSelection(TransactionCase): @@ -13,10 +13,10 @@ def setUp(self): self.category_employees = self.env["res.partner.category"].create( {"name": "Employees"} ) - self.param = self.env.ref( - "mail_restrict_follower_selection.parameter_res_partner_domain" + self.env["ir.config_parameter"].sudo().set_param( + "mail_restrict_follower_selection.domain.res.partner", + "[('category_id.name', '=', 'Employees')]", ) - self.param.update({"value": "[('category_id.name', '=', 'Employees')]"}) self.partner = self.env["res.partner"].create( { @@ -29,38 +29,29 @@ def setUp(self): def _use_ref_in_domain(self): """Change the general domain to test the safe_eval.""" - param = self.env.ref("mail_restrict_follower_selection.parameter_domain") country_id = self.env.ref("base.ch").id - param.value = f"[('country_id', '!=', {country_id})]" + self.env["ir.config_parameter"].sudo().set_param( + "mail_restrict_follower_selection.domain", + f"[('country_id', '!=', {country_id})]", + ) def test_fields_view_get(self): - result = self.env["mail.wizard.invite"].get_view(view_type="form") + result = self.env["mail.followers.edit"].get_view(view_type="form") for field in etree.fromstring(result["arch"]).xpath( '//field[@name="partner_ids"]' ): self.assertTrue(field.get("domain")) def send_action(self): - compose = ( - self.env["mail.compose.message"] - .with_context( - mail_post_autofollow=True, - default_composition_mode="comment", - default_model="res.partner", - default_use_active_domain=True, - test_restrict_follower=True, - ) - .create( - { - "subject": "From Composer Test", - "body": "${object.description}", - "res_ids": self.partner.ids, - "partner_ids": [(4, id) for id in self.partner.ids], - } - ) + wizard = self.env["mail.followers.edit"].create( + { + "res_model": "res.partner", + "res_ids": str(self.partner.ids), + "operation": "add", + "partner_ids": [Command.link(self.partner.id)], + } ) - self.assertEqual(compose.partner_ids, self.partner) - compose._action_send_mail() + wizard.edit_followers() def test_followers_meet(self): self.partner.write({"category_id": self.category_employees}) @@ -76,36 +67,13 @@ def test_followers_not_meet(self): self.partner, self.partner.message_follower_ids.mapped("partner_id") ) - def test_message_add_suggested_recipient(self): - res = self.partner.with_context( - test_restrict_follower=True - )._message_add_suggested_recipient([], partner=self.partner) - self.assertEqual(res[0]["partner_id"], self.partner.id) - - new_res = self.partner.with_context( - test_restrict_follower=True - )._message_add_suggested_recipient([]) - self.assertFalse(new_res[0].get("partner_id")) - def test_get_view_eval(self): """Check using safe_eval in field_view_get.""" self._use_ref_in_domain() - result = self.env["mail.wizard.invite"].get_view(view_type="form") + result = self.env["mail.followers.edit"].get_view(view_type="form") for field in etree.fromstring(result["arch"]).xpath( '//field[@name="partner_ids"]' ): domain = field.get("domain") self.assertTrue(domain.find("country_id") > 0) self.assertTrue(domain.find(str(self.switzerland.id)) > 0) - - def test_message_add_suggested_recipient_eval(self): - """Check using safe_eval when adding recipients.""" - self._use_ref_in_domain() - partner = self.partner.with_context(test_restrict_follower=True) - res = partner._message_add_suggested_recipient([], partner=self.partner) - self.assertEqual(res[0]["partner_id"], self.partner.id) - - # Partner from Swizterland should be excluded - partner.country_id = self.switzerland - res = partner._message_add_suggested_recipient([], partner=self.partner) - self.assertFalse(res) diff --git a/mail_restrict_follower_selection/wizard/__init__.py b/mail_restrict_follower_selection/wizard/__init__.py new file mode 100644 index 000000000..006f60184 --- /dev/null +++ b/mail_restrict_follower_selection/wizard/__init__.py @@ -0,0 +1,5 @@ +# Copyright (C) 2015 Therp BV +# Copyright (C) 2017 Komit +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import mail_followers_edit diff --git a/mail_restrict_follower_selection/models/mail_wizard_invite.py b/mail_restrict_follower_selection/wizard/mail_followers_edit.py similarity index 59% rename from mail_restrict_follower_selection/models/mail_wizard_invite.py rename to mail_restrict_follower_selection/wizard/mail_followers_edit.py index 24cadd3e1..cb4c4d422 100644 --- a/mail_restrict_follower_selection/models/mail_wizard_invite.py +++ b/mail_restrict_follower_selection/wizard/mail_followers_edit.py @@ -6,14 +6,14 @@ from lxml import etree from odoo import api, models -from odoo.osv import expression +from odoo.fields import Command, Domain from odoo.tools.safe_eval import safe_eval from ..utils import _id_get -class MailWizardInvite(models.TransientModel): - _inherit = "mail.wizard.invite" +class MailFollowersEdit(models.TransientModel): + _inherit = "mail.followers.edit" @api.model def _mail_restrict_follower_selection_get_domain(self, res_model=None): @@ -30,18 +30,36 @@ def _mail_restrict_follower_selection_get_domain(self, res_model=None): .get_param(parameter_name, default="[]"), ) ) - domain = expression.AND( + domain = Domain.AND( [safe_eval(parameter_domain), self._fields["partner_ids"].domain] ) return domain + def edit_followers(self): + if not self.env.context.get("no_restrict_follower"): + for wizard in self.filtered(lambda w: w.operation == "add"): + domain_str = str( + self._mail_restrict_follower_selection_get_domain( + res_model=wizard.res_model + ) + ) + allowed_partners = self.env["res.partner"].search( + [("id", "in", wizard.partner_ids.ids)] + + safe_eval( + domain_str, + {"ref": lambda str_id: _id_get(self.env, str_id)}, + ) + ) + wizard.write({"partner_ids": [Command.set(allowed_partners.ids)]}) + return super().edit_followers() + @api.model def get_view(self, view_id=None, view_type="form", **options): result = super().get_view(view_id=view_id, view_type=view_type, **options) arch = etree.fromstring(result["arch"]) domain = self._mail_restrict_follower_selection_get_domain() eval_domain = safe_eval( - str(domain), locals_dict={"ref": lambda str_id: _id_get(self.env, str_id)} + str(domain), {"ref": lambda str_id: _id_get(self.env, str_id)} ) for field in arch.xpath('//field[@name="partner_ids"]'): field.attrib["domain"] = str(eval_domain)