From f27c4fed5d4c85d9cbf4ddf7fc172bfb24f94cfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Fri, 7 May 2021 12:39:15 +0200 Subject: [PATCH 01/11] [ADD] crm_security_group: Add new category about CRM and create 3 groups (Own Documents Only, All Documents and Administrator) to separate Sales and CRM apps --- crm_security_group/README.rst | 88 ++++ crm_security_group/__init__.py | 0 crm_security_group/__manifest__.py | 21 + .../i18n/crm_security_group.pot | 35 ++ crm_security_group/readme/CONTRIBUTORS.rst | 3 + crm_security_group/readme/DESCRIPTION.rst | 1 + crm_security_group/readme/ROADMAP.rst | 1 + .../security/ir.model.access.csv | 9 + crm_security_group/security/security.xml | 58 +++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 431 ++++++++++++++++++ crm_security_group/tests/__init__.py | 2 + crm_security_group/tests/test_crm_security.py | 124 +++++ crm_security_group/views/menu_items.xml | 40 ++ 14 files changed, 813 insertions(+) create mode 100644 crm_security_group/README.rst create mode 100644 crm_security_group/__init__.py create mode 100644 crm_security_group/__manifest__.py create mode 100644 crm_security_group/i18n/crm_security_group.pot create mode 100644 crm_security_group/readme/CONTRIBUTORS.rst create mode 100644 crm_security_group/readme/DESCRIPTION.rst create mode 100644 crm_security_group/readme/ROADMAP.rst create mode 100644 crm_security_group/security/ir.model.access.csv create mode 100644 crm_security_group/security/security.xml create mode 100644 crm_security_group/static/description/icon.png create mode 100644 crm_security_group/static/description/index.html create mode 100644 crm_security_group/tests/__init__.py create mode 100644 crm_security_group/tests/test_crm_security.py create mode 100644 crm_security_group/views/menu_items.xml diff --git a/crm_security_group/README.rst b/crm_security_group/README.rst new file mode 100644 index 00000000000..1b2bc20c667 --- /dev/null +++ b/crm_security_group/README.rst @@ -0,0 +1,88 @@ +======================== +CRM Only Security Groups +======================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fcrm-lightgray.png?logo=github + :target: https://github.com/OCA/crm/tree/13.0/crm_security_group + :alt: OCA/crm +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/crm-13-0/crm-13-0-crm_security_group + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/111/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds new security options to CRM by creating 3 groups (Own Documents Only, All Documents and Administrator) to separate Sales and CRM apps permissions + +**Table of contents** + +.. contents:: + :local: + +Known issues / Roadmap +====================== + +- Remove sale_crm dependency (now is not possible), maybe split these part in other addon + +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 +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `__: + + * Víctor Martínez + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-victoralmau| image:: https://github.com/victoralmau.png?size=40px + :target: https://github.com/victoralmau + :alt: victoralmau + +Current `maintainer `__: + +|maintainer-victoralmau| + +This module is part of the `OCA/crm `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/crm_security_group/__init__.py b/crm_security_group/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/crm_security_group/__manifest__.py b/crm_security_group/__manifest__.py new file mode 100644 index 00000000000..48034d7cb2d --- /dev/null +++ b/crm_security_group/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2021 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "CRM Only Security Groups", + "summary": "Add new group in Sales to show only CRM", + "version": "13.0.1.0.0", + "category": "Customer Relationship Management", + "website": "https://github.com/OCA/crm/", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": ["crm", "sale_crm"], + # sale_crm dependency is necessary to add groups in some view + "maintainers": ["victoralmau"], + "data": [ + "security/security.xml", + "security/ir.model.access.csv", + "views/menu_items.xml", + ], +} diff --git a/crm_security_group/i18n/crm_security_group.pot b/crm_security_group/i18n/crm_security_group.pot new file mode 100644 index 00000000000..b43a5917cb5 --- /dev/null +++ b/crm_security_group/i18n/crm_security_group.pot @@ -0,0 +1,35 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_security_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: crm_security_group +#: model:res.groups,name:crm_security_group.group_crm_manager +msgid "Administrator" +msgstr "" + +#. module: crm_security_group +#: model:ir.module.category,name:crm_security_group.module_category_crm +#: model:ir.module.category,name:crm_security_group.module_category_crm_crm +msgid "CRM" +msgstr "" + +#. module: crm_security_group +#: model:res.groups,name:crm_security_group.group_crm_all_leads +msgid "User: All Documents" +msgstr "" + +#. module: crm_security_group +#: model:res.groups,name:crm_security_group.group_crm_own_leads +msgid "User: Own Documents Only" +msgstr "" diff --git a/crm_security_group/readme/CONTRIBUTORS.rst b/crm_security_group/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..ae3b3ea56a3 --- /dev/null +++ b/crm_security_group/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Tecnativa `__: + + * Víctor Martínez diff --git a/crm_security_group/readme/DESCRIPTION.rst b/crm_security_group/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..d5dca4251d6 --- /dev/null +++ b/crm_security_group/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds new security options to CRM by creating 3 groups (Own Documents Only, All Documents and Administrator) to separate Sales and CRM apps permissions diff --git a/crm_security_group/readme/ROADMAP.rst b/crm_security_group/readme/ROADMAP.rst new file mode 100644 index 00000000000..44e75740b69 --- /dev/null +++ b/crm_security_group/readme/ROADMAP.rst @@ -0,0 +1 @@ +- Remove sale_crm dependency (now is not possible), maybe split these part in other addon diff --git a/crm_security_group/security/ir.model.access.csv b/crm_security_group/security/ir.model.access.csv new file mode 100644 index 00000000000..e24f07e6772 --- /dev/null +++ b/crm_security_group/security/ir.model.access.csv @@ -0,0 +1,9 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_crm_lead_user,crm.lead.user,crm.model_crm_lead,crm_security_group.group_crm_own_leads,1,1,1,0 +access_crm_team_user,crm.team.user,sales_team.model_crm_team,crm_security_group.group_crm_own_leads,1,0,0,0 +access_crm_team_manager,crm.team.manager,sales_team.model_crm_team,crm_security_group.group_crm_own_leads,1,1,1,1 +access_crm_stage_manager,crm.stage.manager,crm.model_crm_stage,crm_security_group.group_crm_manager,1,1,1,1 +access_crm_lead_tag_own_leads,crm.lead.tag.own.leads,crm.model_crm_lead_tag,crm_security_group.group_crm_own_leads,1,1,1,0 +access_crm_lead_tag_manager,crm.lead.tag.manager,crm.model_crm_lead_tag,crm_security_group.group_crm_manager,1,1,1,1 +access_crm_lead_scoring_frequency_user,crm.lead.scoring.frequency.user,crm.model_crm_lead_scoring_frequency,crm_security_group.group_crm_own_leads,1,0,0,0 +access_crm_lead_scoring_frequency_field_user,crm.lead.scoring.frequency.field.user,crm.model_crm_lead_scoring_frequency_field,crm_security_group.group_crm_own_leads,1,0,0,0 diff --git a/crm_security_group/security/security.xml b/crm_security_group/security/security.xml new file mode 100644 index 00000000000..b3f0b2ae9ea --- /dev/null +++ b/crm_security_group/security/security.xml @@ -0,0 +1,58 @@ + + + + CRM + 80 + + + CRM + + + + User: Own Documents Only + + + + + User: All Documents + + + + + Administrator + + + + + + + Personal Leads + + ['|',('user_id','=',user.id),('user_id','=',False)] + + + + All Leads + + [(1,'=',1)] + + + + diff --git a/crm_security_group/static/description/icon.png b/crm_security_group/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/crm_security_group/static/description/index.html b/crm_security_group/static/description/index.html new file mode 100644 index 00000000000..5a3c493a268 --- /dev/null +++ b/crm_security_group/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +CRM Only Security Groups + + + +
+

CRM Only Security Groups

+ + +

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

+

This module adds new security options to CRM by creating 3 groups (Own Documents Only, All Documents and Administrator) to separate Sales and CRM apps permissions

+

Table of contents

+ +
+

Known issues / Roadmap

+
    +
  • Remove sale_crm dependency (now is not possible), maybe split these part in other addon
  • +
+
+
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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

+

Current maintainer:

+

victoralmau

+

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

+

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

+
+
+
+ + diff --git a/crm_security_group/tests/__init__.py b/crm_security_group/tests/__init__.py new file mode 100644 index 00000000000..bcb33e9f7e1 --- /dev/null +++ b/crm_security_group/tests/__init__.py @@ -0,0 +1,2 @@ +# License LGPL-3 - See https://www.gnu.org/licenses/lgpl-3.0.html +from . import test_crm_security diff --git a/crm_security_group/tests/test_crm_security.py b/crm_security_group/tests/test_crm_security.py new file mode 100644 index 00000000000..0fefffe0779 --- /dev/null +++ b/crm_security_group/tests/test_crm_security.py @@ -0,0 +1,124 @@ +# Copyright 2021 Tecnativa - Víctor Martínez +# License LGPL-3 - See https://www.gnu.org/licenses/lgpl-3.0.html + +from odoo.exceptions import AccessError +from odoo.tests.common import Form, SavepointCase + + +class TestCrmSecurity(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.group_user = cls.env.ref("base.group_user") + cls.group_crm_all_leads = cls.env.ref("crm_security_group.group_crm_all_leads") + cls.group_sale_salesman_all_leads = cls.env.ref( + "sales_team.group_sale_salesman_all_leads" + ) + cls.crm_user = cls.env["res.users"].create( + { + "name": "crm_user", + "login": "crm_user", + "email": "example@crm_user.com", + "groups_id": [(6, 0, [cls.group_user.id, cls.group_crm_all_leads.id])], + } + ) + cls.sale_user = cls.env["res.users"].create( + { + "name": "sale_user", + "login": "sale_user", + "email": "example@sale_user.com", + "groups_id": [ + (6, 0, [cls.group_user.id, cls.group_sale_salesman_all_leads.id]) + ], + } + ) + cls.crm_sale_user = cls.env["res.users"].create( + { + "name": "crm_sale_user", + "login": "crm_sale_user", + "email": "example@crm_sale_user.com", + "groups_id": [ + ( + 6, + 0, + [ + cls.group_user.id, + cls.group_crm_all_leads.id, + cls.group_sale_salesman_all_leads.id, + ], + ) + ], + } + ) + cls.model_ir_ui_menu = cls.env["ir.ui.menu"] + cls.crm_menu = cls.env.ref("crm.crm_menu_root") + cls.sale_menu = cls.env.ref("sale.sale_menu_root") + # create items to test after + cls.partner = cls.env["res.partner"].create({"name": "Test partner"}) + cls.crm_lead = cls.env["crm.lead"].sudo().create({"name": "Lead"}) + cls.sale_order = ( + cls.env["sale.order"].sudo().create({"partner_id": cls.partner.id}) + ) + + def test_user_crm_only(self): + model = self.model_ir_ui_menu.with_user(self.crm_user) + items = model._visible_menu_ids() + self.assertTrue(self.crm_menu.id in items) + self.assertFalse(self.sale_menu.id in items) + # Crm lead checks + crm_lead_model = self.env["crm.lead"].with_user(self.crm_user) + crm_lead = crm_lead_model.browse(self.crm_lead.id) + self.assertEqual(crm_lead, self.crm_lead) + with self.assertRaises(AccessError): + self.crm_lead.with_user(self.crm_user).unlink() + crm_lead_form = Form(crm_lead_model) + crm_lead_form.name = "Lead" + crm_lead_form.save() + + def test_user_sale(self): + model = self.model_ir_ui_menu.with_user(self.sale_user) + items = model._visible_menu_ids() + self.assertTrue(self.crm_menu.id in items) + self.assertTrue(self.sale_menu.id in items) + # Crm lead checks + crm_lead_model = self.env["crm.lead"].with_user(self.sale_user) + crm_lead = crm_lead_model.browse(self.crm_lead.id) + self.assertEqual(crm_lead, self.crm_lead) + with self.assertRaises(AccessError): + self.crm_lead.with_user(self.sale_user).unlink() + crm_lead_form = Form(crm_lead_model) + crm_lead_form.name = "Lead" + crm_lead_form.save() + # Sale order checks + sale_order_model = self.env["sale.order"].with_user(self.sale_user) + sale_order = sale_order_model.browse(self.sale_order.id) + self.assertEqual(sale_order, self.sale_order) + with self.assertRaises(AccessError): + self.sale_order.with_user(self.sale_user).unlink() + sale_order_form = Form(sale_order_model) + sale_order_form.partner_id = self.partner + sale_order_form.save() + + def test_user_crm_sale(self): + model = self.model_ir_ui_menu.with_user(self.crm_sale_user) + items = model._visible_menu_ids() + self.assertTrue(self.crm_menu.id in items) + self.assertTrue(self.sale_menu.id in items) + # Crm lead checks + crm_lead_model = self.env["crm.lead"].with_user(self.crm_sale_user) + crm_lead = crm_lead_model.browse(self.crm_lead.id) + self.assertEqual(crm_lead, self.crm_lead) + with self.assertRaises(AccessError): + self.crm_lead.with_user(self.crm_sale_user).unlink() + crm_lead_form = Form(crm_lead_model) + crm_lead_form.name = "Lead" + crm_lead_form.save() + # Sale order checks + sale_order_model = self.env["sale.order"].with_user(self.crm_sale_user) + sale_order = sale_order_model.browse(self.sale_order.id) + self.assertEqual(sale_order, self.sale_order) + with self.assertRaises(AccessError): + self.sale_order.with_user(self.crm_sale_user).unlink() + sale_order_form = Form(sale_order_model) + sale_order_form.partner_id = self.partner + sale_order_form.save() diff --git a/crm_security_group/views/menu_items.xml b/crm_security_group/views/menu_items.xml new file mode 100644 index 00000000000..f08ad44f95f --- /dev/null +++ b/crm_security_group/views/menu_items.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 3175963e74d9b02fe49067152906703ac25b3c6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Fri, 21 May 2021 09:28:53 +0200 Subject: [PATCH 02/11] [IMP] crm_security_group: black, isort, prettier --- crm_security_group/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crm_security_group/__manifest__.py b/crm_security_group/__manifest__.py index 48034d7cb2d..da3533896fb 100644 --- a/crm_security_group/__manifest__.py +++ b/crm_security_group/__manifest__.py @@ -5,7 +5,7 @@ "summary": "Add new group in Sales to show only CRM", "version": "13.0.1.0.0", "category": "Customer Relationship Management", - "website": "https://github.com/OCA/crm/", + "website": "https://github.com/OCA/crm", "author": "Tecnativa, Odoo Community Association (OCA)", "license": "AGPL-3", "application": False, From 183487fb72095f9c7c9a4ff21bb3442f9bdbf690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Fri, 21 May 2021 09:39:17 +0200 Subject: [PATCH 03/11] [MIG] crm_security_group: Migration to 14.0 [UPD] Update crm_security_group.pot [UPD] README.rst crm_security_group 14.0.1.0.1 --- crm_security_group/README.rst | 10 +++++----- crm_security_group/__manifest__.py | 2 +- crm_security_group/i18n/crm_security_group.pot | 2 +- crm_security_group/security/ir.model.access.csv | 4 ++-- crm_security_group/static/description/index.html | 6 +++--- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/crm_security_group/README.rst b/crm_security_group/README.rst index 1b2bc20c667..655191bc551 100644 --- a/crm_security_group/README.rst +++ b/crm_security_group/README.rst @@ -14,13 +14,13 @@ CRM Only Security Groups :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcrm-lightgray.png?logo=github - :target: https://github.com/OCA/crm/tree/13.0/crm_security_group + :target: https://github.com/OCA/crm/tree/14.0/crm_security_group :alt: OCA/crm .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/crm-13-0/crm-13-0-crm_security_group + :target: https://translation.odoo-community.org/projects/crm-14-0/crm-14-0-crm_security_group :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/111/13.0 + :target: https://runbot.odoo-community.org/runbot/111/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -43,7 +43,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. @@ -83,6 +83,6 @@ Current `maintainer `__: |maintainer-victoralmau| -This module is part of the `OCA/crm `_ project on GitHub. +This module is part of the `OCA/crm `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/crm_security_group/__manifest__.py b/crm_security_group/__manifest__.py index da3533896fb..dd590ca8eaa 100644 --- a/crm_security_group/__manifest__.py +++ b/crm_security_group/__manifest__.py @@ -3,7 +3,7 @@ { "name": "CRM Only Security Groups", "summary": "Add new group in Sales to show only CRM", - "version": "13.0.1.0.0", + "version": "14.0.1.0.1", "category": "Customer Relationship Management", "website": "https://github.com/OCA/crm", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/crm_security_group/i18n/crm_security_group.pot b/crm_security_group/i18n/crm_security_group.pot index b43a5917cb5..90f2ad55561 100644 --- a/crm_security_group/i18n/crm_security_group.pot +++ b/crm_security_group/i18n/crm_security_group.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" diff --git a/crm_security_group/security/ir.model.access.csv b/crm_security_group/security/ir.model.access.csv index e24f07e6772..d77802ef470 100644 --- a/crm_security_group/security/ir.model.access.csv +++ b/crm_security_group/security/ir.model.access.csv @@ -3,7 +3,7 @@ access_crm_lead_user,crm.lead.user,crm.model_crm_lead,crm_security_group.group_c access_crm_team_user,crm.team.user,sales_team.model_crm_team,crm_security_group.group_crm_own_leads,1,0,0,0 access_crm_team_manager,crm.team.manager,sales_team.model_crm_team,crm_security_group.group_crm_own_leads,1,1,1,1 access_crm_stage_manager,crm.stage.manager,crm.model_crm_stage,crm_security_group.group_crm_manager,1,1,1,1 -access_crm_lead_tag_own_leads,crm.lead.tag.own.leads,crm.model_crm_lead_tag,crm_security_group.group_crm_own_leads,1,1,1,0 -access_crm_lead_tag_manager,crm.lead.tag.manager,crm.model_crm_lead_tag,crm_security_group.group_crm_manager,1,1,1,1 +access_crm_tag_own_leads,sale_team.crm.tag.own.leads,sales_team.model_crm_tag,crm_security_group.group_crm_own_leads,1,1,1,0 +access_crm_tag_manager,sale_team.crm.tag.manager,sales_team.model_crm_tag,crm_security_group.group_crm_manager,1,1,1,1 access_crm_lead_scoring_frequency_user,crm.lead.scoring.frequency.user,crm.model_crm_lead_scoring_frequency,crm_security_group.group_crm_own_leads,1,0,0,0 access_crm_lead_scoring_frequency_field_user,crm.lead.scoring.frequency.field.user,crm.model_crm_lead_scoring_frequency_field,crm_security_group.group_crm_own_leads,1,0,0,0 diff --git a/crm_security_group/static/description/index.html b/crm_security_group/static/description/index.html index 5a3c493a268..7260362d5fe 100644 --- a/crm_security_group/static/description/index.html +++ b/crm_security_group/static/description/index.html @@ -367,7 +367,7 @@

CRM Only Security Groups

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

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

+

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

This module adds new security options to CRM by creating 3 groups (Own Documents Only, All Documents and Administrator) to separate Sales and CRM apps permissions

Table of contents

@@ -393,7 +393,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.

@@ -422,7 +422,7 @@

Maintainers

promote its widespread use.

Current maintainer:

victoralmau

-

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

+

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

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

From bec94122c8038241c6385528a584b18074ef1737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Fri, 4 Nov 2022 12:48:30 +0100 Subject: [PATCH 04/11] [MIG] crm_security_group: Migration to 15.0 TT40356 [UPD] Update crm_security_group.pot [UPD] README.rst --- crm_security_group/README.rst | 10 +- crm_security_group/__manifest__.py | 2 +- .../i18n/crm_security_group.pot | 3 +- crm_security_group/security/security.xml | 6 +- .../static/description/index.html | 6 +- crm_security_group/tests/test_crm_security.py | 124 +++++++----------- crm_security_group/views/menu_items.xml | 6 +- 7 files changed, 59 insertions(+), 98 deletions(-) diff --git a/crm_security_group/README.rst b/crm_security_group/README.rst index 655191bc551..37337c0bc10 100644 --- a/crm_security_group/README.rst +++ b/crm_security_group/README.rst @@ -14,13 +14,13 @@ CRM Only Security Groups :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcrm-lightgray.png?logo=github - :target: https://github.com/OCA/crm/tree/14.0/crm_security_group + :target: https://github.com/OCA/crm/tree/15.0/crm_security_group :alt: OCA/crm .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/crm-14-0/crm-14-0-crm_security_group + :target: https://translation.odoo-community.org/projects/crm-15-0/crm-15-0-crm_security_group :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/111/14.0 + :target: https://runbot.odoo-community.org/runbot/111/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -43,7 +43,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. @@ -83,6 +83,6 @@ Current `maintainer `__: |maintainer-victoralmau| -This module is part of the `OCA/crm `_ project on GitHub. +This module is part of the `OCA/crm `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/crm_security_group/__manifest__.py b/crm_security_group/__manifest__.py index dd590ca8eaa..33f4440bfd2 100644 --- a/crm_security_group/__manifest__.py +++ b/crm_security_group/__manifest__.py @@ -3,7 +3,7 @@ { "name": "CRM Only Security Groups", "summary": "Add new group in Sales to show only CRM", - "version": "14.0.1.0.1", + "version": "15.0.1.0.0", "category": "Customer Relationship Management", "website": "https://github.com/OCA/crm", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/crm_security_group/i18n/crm_security_group.pot b/crm_security_group/i18n/crm_security_group.pot index 90f2ad55561..017754df9ef 100644 --- a/crm_security_group/i18n/crm_security_group.pot +++ b/crm_security_group/i18n/crm_security_group.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -19,7 +19,6 @@ msgid "Administrator" msgstr "" #. module: crm_security_group -#: model:ir.module.category,name:crm_security_group.module_category_crm #: model:ir.module.category,name:crm_security_group.module_category_crm_crm msgid "CRM" msgstr "" diff --git a/crm_security_group/security/security.xml b/crm_security_group/security/security.xml index b3f0b2ae9ea..f8488c6b28c 100644 --- a/crm_security_group/security/security.xml +++ b/crm_security_group/security/security.xml @@ -1,12 +1,8 @@ - - CRM - 80 - CRM - + User: Own Documents Only diff --git a/crm_security_group/static/description/index.html b/crm_security_group/static/description/index.html index 7260362d5fe..fe9509387ea 100644 --- a/crm_security_group/static/description/index.html +++ b/crm_security_group/static/description/index.html @@ -367,7 +367,7 @@

CRM Only Security Groups

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

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

+

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

This module adds new security options to CRM by creating 3 groups (Own Documents Only, All Documents and Administrator) to separate Sales and CRM apps permissions

Table of contents

@@ -393,7 +393,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.

@@ -422,7 +422,7 @@

Maintainers

promote its widespread use.

Current maintainer:

victoralmau

-

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

+

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

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

diff --git a/crm_security_group/tests/test_crm_security.py b/crm_security_group/tests/test_crm_security.py index 0fefffe0779..7fffa1db836 100644 --- a/crm_security_group/tests/test_crm_security.py +++ b/crm_security_group/tests/test_crm_security.py @@ -1,56 +1,32 @@ -# Copyright 2021 Tecnativa - Víctor Martínez +# Copyright 2021-2022 Tecnativa - Víctor Martínez # License LGPL-3 - See https://www.gnu.org/licenses/lgpl-3.0.html from odoo.exceptions import AccessError -from odoo.tests.common import Form, SavepointCase +from odoo.tests import Form, common, new_test_user +from odoo.tests.common import users -class TestCrmSecurity(SavepointCase): +class TestCrmSecurity(common.TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.group_user = cls.env.ref("base.group_user") - cls.group_crm_all_leads = cls.env.ref("crm_security_group.group_crm_all_leads") - cls.group_sale_salesman_all_leads = cls.env.ref( - "sales_team.group_sale_salesman_all_leads" + group_crm_all_leads = "crm_security_group.group_crm_all_leads" + group_sale_salesman_all_leads = "sales_team.group_sale_salesman_all_leads" + new_test_user( + cls.env, + login="crm_user", + groups=group_crm_all_leads, ) - cls.crm_user = cls.env["res.users"].create( - { - "name": "crm_user", - "login": "crm_user", - "email": "example@crm_user.com", - "groups_id": [(6, 0, [cls.group_user.id, cls.group_crm_all_leads.id])], - } + new_test_user( + cls.env, + login="sale_user", + groups=group_sale_salesman_all_leads, ) - cls.sale_user = cls.env["res.users"].create( - { - "name": "sale_user", - "login": "sale_user", - "email": "example@sale_user.com", - "groups_id": [ - (6, 0, [cls.group_user.id, cls.group_sale_salesman_all_leads.id]) - ], - } + new_test_user( + cls.env, + login="crm_sale_user", + groups="%s,%s" % (group_crm_all_leads, group_sale_salesman_all_leads), ) - cls.crm_sale_user = cls.env["res.users"].create( - { - "name": "crm_sale_user", - "login": "crm_sale_user", - "email": "example@crm_sale_user.com", - "groups_id": [ - ( - 6, - 0, - [ - cls.group_user.id, - cls.group_crm_all_leads.id, - cls.group_sale_salesman_all_leads.id, - ], - ) - ], - } - ) - cls.model_ir_ui_menu = cls.env["ir.ui.menu"] cls.crm_menu = cls.env.ref("crm.crm_menu_root") cls.sale_menu = cls.env.ref("sale.sale_menu_root") # create items to test after @@ -60,65 +36,55 @@ def setUpClass(cls): cls.env["sale.order"].sudo().create({"partner_id": cls.partner.id}) ) + @users("crm_user") def test_user_crm_only(self): - model = self.model_ir_ui_menu.with_user(self.crm_user) - items = model._visible_menu_ids() - self.assertTrue(self.crm_menu.id in items) - self.assertFalse(self.sale_menu.id in items) + items = self.env["ir.ui.menu"]._visible_menu_ids() + self.assertIn(self.crm_menu.id, items) + self.assertNotIn(self.sale_menu.id, items) # Crm lead checks - crm_lead_model = self.env["crm.lead"].with_user(self.crm_user) - crm_lead = crm_lead_model.browse(self.crm_lead.id) - self.assertEqual(crm_lead, self.crm_lead) + crm_lead = self.env["crm.lead"].browse(self.crm_lead.id) with self.assertRaises(AccessError): - self.crm_lead.with_user(self.crm_user).unlink() - crm_lead_form = Form(crm_lead_model) + crm_lead.unlink() + crm_lead_form = Form(self.env["crm.lead"]) crm_lead_form.name = "Lead" crm_lead_form.save() + @users("sale_user") def test_user_sale(self): - model = self.model_ir_ui_menu.with_user(self.sale_user) - items = model._visible_menu_ids() - self.assertTrue(self.crm_menu.id in items) - self.assertTrue(self.sale_menu.id in items) + items = self.env["ir.ui.menu"]._visible_menu_ids() + self.assertNotIn(self.crm_menu.id, items) + self.assertIn(self.sale_menu.id, items) # Crm lead checks - crm_lead_model = self.env["crm.lead"].with_user(self.sale_user) - crm_lead = crm_lead_model.browse(self.crm_lead.id) - self.assertEqual(crm_lead, self.crm_lead) + crm_lead = self.env["crm.lead"].browse(self.crm_lead.id) with self.assertRaises(AccessError): - self.crm_lead.with_user(self.sale_user).unlink() - crm_lead_form = Form(crm_lead_model) + crm_lead.unlink() + crm_lead_form = Form(self.env["crm.lead"]) crm_lead_form.name = "Lead" crm_lead_form.save() # Sale order checks - sale_order_model = self.env["sale.order"].with_user(self.sale_user) - sale_order = sale_order_model.browse(self.sale_order.id) - self.assertEqual(sale_order, self.sale_order) + sale_order = self.env["sale.order"].browse(self.sale_order.id) with self.assertRaises(AccessError): - self.sale_order.with_user(self.sale_user).unlink() - sale_order_form = Form(sale_order_model) + sale_order.unlink() + sale_order_form = Form(self.env["sale.order"]) sale_order_form.partner_id = self.partner sale_order_form.save() + @users("crm_sale_user") def test_user_crm_sale(self): - model = self.model_ir_ui_menu.with_user(self.crm_sale_user) - items = model._visible_menu_ids() - self.assertTrue(self.crm_menu.id in items) - self.assertTrue(self.sale_menu.id in items) + items = self.env["ir.ui.menu"]._visible_menu_ids() + self.assertIn(self.crm_menu.id, items) + self.assertIn(self.sale_menu.id, items) # Crm lead checks - crm_lead_model = self.env["crm.lead"].with_user(self.crm_sale_user) - crm_lead = crm_lead_model.browse(self.crm_lead.id) - self.assertEqual(crm_lead, self.crm_lead) + crm_lead = self.env["crm.lead"].browse(self.crm_lead.id) with self.assertRaises(AccessError): - self.crm_lead.with_user(self.crm_sale_user).unlink() - crm_lead_form = Form(crm_lead_model) + crm_lead.unlink() + crm_lead_form = Form(self.env["crm.lead"]) crm_lead_form.name = "Lead" crm_lead_form.save() # Sale order checks - sale_order_model = self.env["sale.order"].with_user(self.crm_sale_user) - sale_order = sale_order_model.browse(self.sale_order.id) - self.assertEqual(sale_order, self.sale_order) + sale_order = self.env["sale.order"].browse(self.sale_order.id) with self.assertRaises(AccessError): - self.sale_order.with_user(self.crm_sale_user).unlink() - sale_order_form = Form(sale_order_model) + sale_order.unlink() + sale_order_form = Form(self.env["sale.order"]) sale_order_form.partner_id = self.partner sale_order_form.save() diff --git a/crm_security_group/views/menu_items.xml b/crm_security_group/views/menu_items.xml index f08ad44f95f..6e7e8888880 100644 --- a/crm_security_group/views/menu_items.xml +++ b/crm_security_group/views/menu_items.xml @@ -3,7 +3,7 @@ @@ -18,7 +18,7 @@ @@ -34,7 +34,7 @@ - +
From 27d1e8ab1a350c771685cd002fef2699774cc603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Wed, 9 Nov 2022 08:08:28 +0100 Subject: [PATCH 05/11] [FIX] crm_security_group: Set groups_id in menu items correctly (similar to v14) TT40356 crm_security_group 15.0.1.1.0 --- crm_security_group/__manifest__.py | 2 +- crm_security_group/views/menu_items.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crm_security_group/__manifest__.py b/crm_security_group/__manifest__.py index 33f4440bfd2..5ce8bc11528 100644 --- a/crm_security_group/__manifest__.py +++ b/crm_security_group/__manifest__.py @@ -3,7 +3,7 @@ { "name": "CRM Only Security Groups", "summary": "Add new group in Sales to show only CRM", - "version": "15.0.1.0.0", + "version": "15.0.1.1.0", "category": "Customer Relationship Management", "website": "https://github.com/OCA/crm", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/crm_security_group/views/menu_items.xml b/crm_security_group/views/menu_items.xml index 6e7e8888880..95bb8afdfab 100644 --- a/crm_security_group/views/menu_items.xml +++ b/crm_security_group/views/menu_items.xml @@ -3,7 +3,7 @@ @@ -18,7 +18,7 @@ From 4d9b90f614d77c47f608f60019a994918a7ee4fe Mon Sep 17 00:00:00 2001 From: luis-ron Date: Tue, 6 Jun 2023 10:16:55 +0000 Subject: [PATCH 06/11] Added translation using Weblate (Spanish) Translated using Weblate (Spanish) Currently translated at 100.0% (4 of 4 strings) Translation: crm-15.0/crm-15.0-crm_security_group Translate-URL: https://translation.odoo-community.org/projects/crm-15-0/crm-15-0-crm_security_group/es/ --- crm_security_group/i18n/es.po | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 crm_security_group/i18n/es.po diff --git a/crm_security_group/i18n/es.po b/crm_security_group/i18n/es.po new file mode 100644 index 00000000000..620c24ffa20 --- /dev/null +++ b/crm_security_group/i18n/es.po @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_security_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-06 12:08+0000\n" +"Last-Translator: luis-ron \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: crm_security_group +#: model:res.groups,name:crm_security_group.group_crm_manager +msgid "Administrator" +msgstr "Adminsitrador" + +#. module: crm_security_group +#: model:ir.module.category,name:crm_security_group.module_category_crm_crm +msgid "CRM" +msgstr "CRM" + +#. module: crm_security_group +#: model:res.groups,name:crm_security_group.group_crm_all_leads +msgid "User: All Documents" +msgstr "Usuario: Todos los documentos" + +#. module: crm_security_group +#: model:res.groups,name:crm_security_group.group_crm_own_leads +msgid "User: Own Documents Only" +msgstr "Usuario: Mostrar solo documentos propios" From 7ca0144ade6923fb2bcd08d1b2eeab79dd7ebe1b Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 12 Jun 2023 14:19:17 +0000 Subject: [PATCH 07/11] Added translation using Weblate (Italian) Translated using Weblate (Italian) Currently translated at 100.0% (4 of 4 strings) Translation: crm-15.0/crm-15.0-crm_security_group Translate-URL: https://translation.odoo-community.org/projects/crm-15-0/crm-15-0-crm_security_group/it/ Translated using Weblate (Italian) Currently translated at 100.0% (4 of 4 strings) Translation: crm-15.0/crm-15.0-crm_security_group Translate-URL: https://translation.odoo-community.org/projects/crm-15-0/crm-15-0-crm_security_group/it/ --- crm_security_group/i18n/it.po | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 crm_security_group/i18n/it.po diff --git a/crm_security_group/i18n/it.po b/crm_security_group/i18n/it.po new file mode 100644 index 00000000000..98163d34a10 --- /dev/null +++ b/crm_security_group/i18n/it.po @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_security_group +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 15.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-06-13 16:12+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: crm_security_group +#: model:res.groups,name:crm_security_group.group_crm_manager +msgid "Administrator" +msgstr "Amministratore" + +#. module: crm_security_group +#: model:ir.module.category,name:crm_security_group.module_category_crm_crm +msgid "CRM" +msgstr "CRM" + +#. module: crm_security_group +#: model:res.groups,name:crm_security_group.group_crm_all_leads +msgid "User: All Documents" +msgstr "Utente: tutti i documenti" + +#. module: crm_security_group +#: model:res.groups,name:crm_security_group.group_crm_own_leads +msgid "User: Own Documents Only" +msgstr "Utente: solo i propri documenti" From d17cfd84d7f116cd1ad7f3179ffed97f0b04bb54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 22 Jun 2023 12:45:57 +0200 Subject: [PATCH 08/11] [FIX] crm_security_group: Add ACL from crm.lead.lost to group_crm_own_leads TT44050 crm_security_group 15.0.1.2.0 --- crm_security_group/__manifest__.py | 2 +- crm_security_group/security/ir.model.access.csv | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/crm_security_group/__manifest__.py b/crm_security_group/__manifest__.py index 5ce8bc11528..a6cedb10f05 100644 --- a/crm_security_group/__manifest__.py +++ b/crm_security_group/__manifest__.py @@ -3,7 +3,7 @@ { "name": "CRM Only Security Groups", "summary": "Add new group in Sales to show only CRM", - "version": "15.0.1.1.0", + "version": "15.0.1.2.0", "category": "Customer Relationship Management", "website": "https://github.com/OCA/crm", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/crm_security_group/security/ir.model.access.csv b/crm_security_group/security/ir.model.access.csv index d77802ef470..f37b8cf6358 100644 --- a/crm_security_group/security/ir.model.access.csv +++ b/crm_security_group/security/ir.model.access.csv @@ -7,3 +7,4 @@ access_crm_tag_own_leads,sale_team.crm.tag.own.leads,sales_team.model_crm_tag,cr access_crm_tag_manager,sale_team.crm.tag.manager,sales_team.model_crm_tag,crm_security_group.group_crm_manager,1,1,1,1 access_crm_lead_scoring_frequency_user,crm.lead.scoring.frequency.user,crm.model_crm_lead_scoring_frequency,crm_security_group.group_crm_own_leads,1,0,0,0 access_crm_lead_scoring_frequency_field_user,crm.lead.scoring.frequency.field.user,crm.model_crm_lead_scoring_frequency_field,crm_security_group.group_crm_own_leads,1,0,0,0 +access_crm_lead_lost_user,crm.lead.user,crm.model_crm_lead_lost,crm_security_group.group_crm_own_leads,1,1,1,0 From ebc3a0b4d9a3e1b75a42d64ed0e42789da14e10e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 17 Aug 2023 11:43:18 +0000 Subject: [PATCH 09/11] Translated using Weblate (Spanish) Currently translated at 100.0% (4 of 4 strings) Translation: crm-15.0/crm-15.0-crm_security_group Translate-URL: https://translation.odoo-community.org/projects/crm-15-0/crm-15-0-crm_security_group/es/ [UPD] README.rst --- crm_security_group/README.rst | 15 ++++--- crm_security_group/i18n/es.po | 6 +-- .../static/description/index.html | 40 ++++++++++--------- 3 files changed, 33 insertions(+), 28 deletions(-) diff --git a/crm_security_group/README.rst b/crm_security_group/README.rst index 37337c0bc10..1fcb58f128b 100644 --- a/crm_security_group/README.rst +++ b/crm_security_group/README.rst @@ -2,10 +2,13 @@ CRM Only Security Groups ======================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:9ec668f2b61df28fba57c5d0e114f71e489f06d8b65c51f9b297eaab0c2b6145 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ CRM Only Security Groups .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/crm-15-0/crm-15-0-crm_security_group :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/111/15.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/crm&target_branch=15.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds new security options to CRM by creating 3 groups (Own Documents Only, All Documents and Administrator) to separate Sales and CRM apps permissions @@ -42,7 +45,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/crm_security_group/i18n/es.po b/crm_security_group/i18n/es.po index 620c24ffa20..a3de7328184 100644 --- a/crm_security_group/i18n/es.po +++ b/crm_security_group/i18n/es.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-06-06 12:08+0000\n" -"Last-Translator: luis-ron \n" +"PO-Revision-Date: 2023-08-17 14:11+0000\n" +"Last-Translator: Víctor Martínez \n" "Language-Team: none\n" "Language: es\n" "MIME-Version: 1.0\n" @@ -19,7 +19,7 @@ msgstr "" #. module: crm_security_group #: model:res.groups,name:crm_security_group.group_crm_manager msgid "Administrator" -msgstr "Adminsitrador" +msgstr "Administrador" #. module: crm_security_group #: model:ir.module.category,name:crm_security_group.module_category_crm_crm diff --git a/crm_security_group/static/description/index.html b/crm_security_group/static/description/index.html index fe9509387ea..0b3820de29c 100644 --- a/crm_security_group/static/description/index.html +++ b/crm_security_group/static/description/index.html @@ -1,20 +1,20 @@ - + - + CRM Only Security Groups