From 109814c119ee7212a2a3421f2c5dbf59308ca08c Mon Sep 17 00:00:00 2001 From: Mitchell Admin Date: Sun, 13 Dec 2020 16:30:15 +0000 Subject: [PATCH 1/4] :tada::one::three: ir_rule_website previous commits history: https://github.com/itpp-labs/access-addons/commits/13.0/ir_rule_protected > Made via .github/workflows/DINAR-PORT.yml --- ir_rule_website/README.rst | 43 +++++++ ir_rule_website/__init__.py | 1 + ir_rule_website/__manifest__.py | 28 +++++ ir_rule_website/doc/changelog.rst | 34 +++++ ir_rule_website/doc/index.rst | 34 +++++ ir_rule_website/i18n/de.po | 56 +++++++++ ir_rule_website/i18n/es_CR.po | 59 +++++++++ ir_rule_website/i18n/ir_rule_website.pot | 47 +++++++ ir_rule_website/images/ir_rule_website.jpg | Bin 0 -> 89740 bytes ir_rule_website/models/__init__.py | 1 + ir_rule_website/models/ir_rule.py | 18 +++ ir_rule_website/static/description/icon.png | Bin 0 -> 3035 bytes ir_rule_website/static/description/index.html | 91 ++++++++++++++ ir_rule_website/tests/__init__.py | 1 + .../tests/test_backend_website_rule.py | 116 ++++++++++++++++++ 15 files changed, 529 insertions(+) create mode 100644 ir_rule_website/README.rst create mode 100644 ir_rule_website/__init__.py create mode 100644 ir_rule_website/__manifest__.py create mode 100644 ir_rule_website/doc/changelog.rst create mode 100644 ir_rule_website/doc/index.rst create mode 100644 ir_rule_website/i18n/de.po create mode 100644 ir_rule_website/i18n/es_CR.po create mode 100644 ir_rule_website/i18n/ir_rule_website.pot create mode 100644 ir_rule_website/images/ir_rule_website.jpg create mode 100644 ir_rule_website/models/__init__.py create mode 100644 ir_rule_website/models/ir_rule.py create mode 100644 ir_rule_website/static/description/icon.png create mode 100644 ir_rule_website/static/description/index.html create mode 100644 ir_rule_website/tests/__init__.py create mode 100644 ir_rule_website/tests/test_backend_website_rule.py diff --git a/ir_rule_website/README.rst b/ir_rule_website/README.rst new file mode 100644 index 00000000..a7965bac --- /dev/null +++ b/ir_rule_website/README.rst @@ -0,0 +1,43 @@ +.. image:: https://itpp.dev/images/infinity-readme.png + :alt: Tested and maintained by IT Projects Labs + :target: https://itpp.dev + +========================== + Multi-Brand Access Rules +========================== + +Allows to use new variables to be used in ``domain_force`` field of Record Rules (``ir.rule``): + +* ``website_ids`` -- equal to ``context["allowed_website_ids"]`` (see module ``web_website``) +* ``websites`` -- browsed ``website_ids`` + +For your information: Odoo provides ``website`` variable, which is equal to current website in frontend and is empty in backend + +Example of usage: + +* Show a blog on specific websites only (TODO: add link to the module) +* Show an event on specific websites only (TODO: add link to the module) +* Show a product on specific websites only (TODO: add link to the module) + +Roadmap +======= + +* This module can be merged to ``web_website`` module +* Website rules don't work for ``/mail/read_followers`` method: https://github.com/itpp-labs/access-addons/issues/232 + +Questions? +========== + +To get an assistance on this module contact us by email :arrow_right: help@itpp.dev + +Contributors +============ +* `Ivan Yelizariev `__ +* `Ildar Nasyrov `__ + +=================== + +Odoo Apps Store: https://apps.odoo.com/apps/modules/13.0/ir_rule_website + + +Tested on `Odoo 13.0 `_ diff --git a/ir_rule_website/__init__.py b/ir_rule_website/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/ir_rule_website/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/ir_rule_website/__manifest__.py b/ir_rule_website/__manifest__.py new file mode 100644 index 00000000..b9d9584a --- /dev/null +++ b/ir_rule_website/__manifest__.py @@ -0,0 +1,28 @@ +# Copyright 2020 Ivan Yelizariev +# License MIT (https://opensource.org/licenses/MIT). +{ + "name": """Multi-Brand Access Rules""", + "summary": """Provide access depending on current website""", + "category": "Access", + # "live_test_url": "", + "images": ["images/ir_rule_website.jpg"], + "version": "13.0.2.0.0", + "application": False, + "author": "IT-Projects LLC, Ildar Nasyrov", + "support": "apps@itpp.dev", + "website": "https://it-projects.info/team/iledarn", + "license": "Other OSI approved licence", # MIT + # "price": 20.00, + # "currency": "EUR", + "depends": ["web_website"], + "external_dependencies": {"python": [], "bin": []}, + "data": [], + "qweb": [], + "demo": [], + "post_load": None, + "pre_init_hook": None, + "post_init_hook": None, + "uninstall_hook": None, + "auto_install": False, + "installable": True, +} diff --git a/ir_rule_website/doc/changelog.rst b/ir_rule_website/doc/changelog.rst new file mode 100644 index 00000000..fed318fe --- /dev/null +++ b/ir_rule_website/doc/changelog.rst @@ -0,0 +1,34 @@ +`2.0.0` +------- + +- **Improvement**: simplify code, get rid of ``backend_behavior`` field + +`1.3.2` +------- + +- **Fix**: Models without group binded rules were then wrongly reduced to an 'AND FALSE' condition. After https://github.com/odoo/odoo/commit/023dfaeb6b9499943315358edaa01c8f823ee695 + +`1.3.1` +------- + +- **Fix**: Random wrong result on applying rules in backend + +`1.3.0` +------- + +- **New:** add ``website`` object to a rule evaluation context - to be able to use rules as such ``[('id','=', website.company_id.id)]`` + +`1.2.0` +------- + +- **Add:** Use user's **Current Backend Website** from ``web_website`` module on evaluating website rules in Odoo backend + +`1.1.0` +------- + +- **Add:** New setting in ``ir.rule`` model - to bypass website rules when working from backend + +`1.0.0` +------- + +- **Init version** diff --git a/ir_rule_website/doc/index.rst b/ir_rule_website/doc/index.rst new file mode 100644 index 00000000..d7434383 --- /dev/null +++ b/ir_rule_website/doc/index.rst @@ -0,0 +1,34 @@ +========================== + Multi-Brand Access Rules +========================== + +Installation +============ + +* `Install `__ this module in a usual way + +Backend Usage +============= + +* As usual open ``[[ Settings ]] >> Technical >> Security >> Record Rules`` to create a new rule or edit existing one +* RESULT: you can use variables ``websites`` and ``website_ids`` in **domain_force** field + +Usage in a module +================= + +If you have a model accessible through a website, you can apply restriction in a following way: + +* Add field ``website_ids`` to your model to specify on which websites the record should be available +* Add this ``ir_rule_website`` into the ``"depends"`` section of your manifest file +* Create a security rule using ``website_ids`` in ``domain_force`` field. For example, + +:: + + + + + Blogs available only for specifed websites + + [('website_ids', 'in', website_ids)] + + diff --git a/ir_rule_website/i18n/de.po b/ir_rule_website/i18n/de.po new file mode 100644 index 00000000..7e6ea999 --- /dev/null +++ b/ir_rule_website/i18n/de.po @@ -0,0 +1,56 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * ir_rule_website +# +# Translators: +# Dawid Runowski , 2019 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-26 19:17+0000\n" +"PO-Revision-Date: 2018-04-18 13:56+0000\n" +"Last-Translator: Dawid Runowski , 2019\n" +"Language-Team: German (https://www.transifex.com/it-projects-llc/teams/76080/" +"de/)\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: ir_rule_website +#: model:ir.model.fields,field_description:ir_rule_website.field_ir_rule_backend_behaviour +msgid "Backend behaviour" +msgstr "" + +#. module: ir_rule_website +#: selection:ir.rule,backend_behaviour:0 +msgid "Deny access" +msgstr "den Zugang verweiger" + +#. module: ir_rule_website +#: selection:ir.rule,backend_behaviour:0 +msgid "Grant access" +msgstr "den Zugang erlauben" + +#. module: ir_rule_website +#: model:ir.ui.view,arch_db:ir_rule_website.view_rule_form_inherit_ir_rule_website +msgid "Multi-website extension" +msgstr "" + +#. module: ir_rule_website +#: model:ir.model.fields,help:ir_rule_website.field_ir_rule_backend_behaviour +msgid "" +"This is bypass for main rule definition.\n" +" When working from backend there is usually no 'website_id' value in " +"the rule evaluation context\n" +" what leads to SQL syntax error such as 'WHERE website_id IN ()' in " +"rules that using 'website_id'" +msgstr "" + +#. module: ir_rule_website +#: model:ir.model,name:ir_rule_website.model_ir_rule +msgid "ir.rule" +msgstr "" diff --git a/ir_rule_website/i18n/es_CR.po b/ir_rule_website/i18n/es_CR.po new file mode 100644 index 00000000..35c8c606 --- /dev/null +++ b/ir_rule_website/i18n/es_CR.po @@ -0,0 +1,59 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * ir_rule_website +# +# Translators: +# Randall , 2018 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-21 00:17+0000\n" +"PO-Revision-Date: 2018-04-21 00:17+0000\n" +"Last-Translator: Randall , 2018\n" +"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/it-projects-" +"llc/teams/76080/es_CR/)\n" +"Language: es_CR\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: ir_rule_website +#: model:ir.model.fields,field_description:ir_rule_website.field_ir_rule__backend_behaviour +msgid "Backend behaviour" +msgstr "" + +#. module: ir_rule_website +#: selection:ir.rule,backend_behaviour:0 +msgid "Deny access" +msgstr "" + +#. module: ir_rule_website +#: selection:ir.rule,backend_behaviour:0 +msgid "Grant access" +msgstr "" + +#. module: ir_rule_website +#: model_terms:ir.ui.view,arch_db:ir_rule_website.view_rule_form_inherit_ir_rule_website +msgid "Multi-website extension" +msgstr "" + +#. module: ir_rule_website +#: model:ir.model,name:ir_rule_website.model_ir_rule +msgid "Record Rule" +msgstr "" + +#. module: ir_rule_website +#: model:ir.model.fields,help:ir_rule_website.field_ir_rule__backend_behaviour +msgid "" +"This is bypass for main rule definition.\n" +" When working from backend there is usually no 'website_id' value in " +"the rule evaluation context\n" +" and rules that using 'website_id' evaluated as False which is not " +"always desirable" +msgstr "" + +#~ msgid "ir.rule" +#~ msgstr "ir.rule" diff --git a/ir_rule_website/i18n/ir_rule_website.pot b/ir_rule_website/i18n/ir_rule_website.pot new file mode 100644 index 00000000..8a98b3f2 --- /dev/null +++ b/ir_rule_website/i18n/ir_rule_website.pot @@ -0,0 +1,47 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * ir_rule_website +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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: ir_rule_website +#: model:ir.model.fields,field_description:ir_rule_website.field_ir_rule__backend_behaviour +msgid "Backend behaviour" +msgstr "" + +#. module: ir_rule_website +#: selection:ir.rule,backend_behaviour:0 +msgid "Deny access" +msgstr "" + +#. module: ir_rule_website +#: selection:ir.rule,backend_behaviour:0 +msgid "Grant access" +msgstr "" + +#. module: ir_rule_website +#: model_terms:ir.ui.view,arch_db:ir_rule_website.view_rule_form_inherit_ir_rule_website +msgid "Multi-website extension" +msgstr "" + +#. module: ir_rule_website +#: model:ir.model,name:ir_rule_website.model_ir_rule +msgid "Record Rule" +msgstr "" + +#. module: ir_rule_website +#: model:ir.model.fields,help:ir_rule_website.field_ir_rule__backend_behaviour +msgid "This is bypass for main rule definition.\n" +" When working from backend there is usually no 'website_id' value in the rule evaluation context\n" +" and rules that using 'website_id' evaluated as False which is not always desirable" +msgstr "" + diff --git a/ir_rule_website/images/ir_rule_website.jpg b/ir_rule_website/images/ir_rule_website.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b2c94d5ca7a381976371cf2d626cc07565cc1e5 GIT binary patch literal 89740 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 +
+
+

Multi-website support in Security Rules

+

Make website-dependent access to pages, products, etc.

+
+
+ + +
+
+
+ +
+ Technical module that allows implementing different features. For example: +
    + +
  • + + Show a blog on specific websites only +
  • + +
  • + + Show an event on specific websites only +
  • + +
  • + + Show a product on specific websites only +
  • + +
+
+ +
+
+
+ +
diff --git a/ir_rule_website/tests/__init__.py b/ir_rule_website/tests/__init__.py new file mode 100644 index 00000000..753b4f70 --- /dev/null +++ b/ir_rule_website/tests/__init__.py @@ -0,0 +1 @@ +from . import test_backend_website_rule diff --git a/ir_rule_website/tests/test_backend_website_rule.py b/ir_rule_website/tests/test_backend_website_rule.py new file mode 100644 index 00000000..40b2446e --- /dev/null +++ b/ir_rule_website/tests/test_backend_website_rule.py @@ -0,0 +1,116 @@ +# Copyright 2020 Ivan Yelizariev +# License MIT (https://opensource.org/licenses/MIT). +from odoo.exceptions import AccessError +from odoo.tests.common import TransactionCase + +# TODO: the tests are quick fixes of the tests for 1.x.x version and need to be cleanup + + +class TestBackendWebsiteRule(TransactionCase): + at_install = True + post_install = True + + def setUp(self): + super(TestBackendWebsiteRule, self).setUp() + self.website1 = self.env.ref("website.default_website") + self.website2 = self.env.ref("website.website2") + self.user1 = self.env.ref("base.user_demo") + self.user1.write( + {"backend_website_id": self.env.ref("website.default_website").id} + ) + + model_res_users = self.env.ref("base.model_res_users") + self.env["ir.rule"].create( + { + "name": "test backend website rule", + "model_id": model_res_users.id, + "domain_force": "[('backend_website_id', 'in', website_ids)]", + } + ) + + User = self.env["res.users"] + self.user2 = User.create( + {"name": "user2", "login": "user2", "backend_website_id": self.website1.id} + ) + self.user3 = User.create( + {"name": "user3", "login": "user3", "backend_website_id": self.website2.id} + ) + + # case for an object references another object + # e.g. [('id','=', website.company_id.id)] + model_res_company = self.env.ref("base.model_res_company") + company2_partner = self.env["res.partner"].create( + {"name": "Partner for Comapny2", "is_company": True} + ) + self.company1 = self.env.ref("base.main_company") + self.company2 = self.env["res.company"].create( + { + "name": "Test Company2", + "partner_id": company2_partner.id, + "parent_id": False, + } + ) + self.website2.company_id = self.company2.id + self.env["ir.rule"].create( + { + "name": "test websites references company", + "model_id": model_res_company.id, + "domain_force": "[('id','=', websites[0].company_id.id)]", + } + ) + + def test_backend_website_rule(self): + users = ( + self.env["res.users"] + .with_user(self.user1) + .with_context(allowed_website_ids=[self.website1.id]) + .search([]) + ) + self.assertIn(self.user2, users) + self.assertNotIn(self.user3, users) + users = ( + self.env["res.users"] + .with_user(self.user1) + .with_context(allowed_website_ids=[self.website2.id]) + .search([]) + ) + self.assertNotIn(self.user2, users) + self.assertIn(self.user3, users) + + # case when in a rule the `website` object references another object (`res.company` in that case) + companies = ( + self.env["res.company"] + .with_user(self.user1) + .with_context(allowed_website_ids=[self.website1.id]) + .search([]) + ) + self.assertNotIn(self.company2, companies) + self.env["res.company"].invalidate_cache() + with self.assertRaises(AccessError): + ( + self.env["res.company"] + .with_user(self.user1) + .with_context(allowed_website_ids=[self.website1.id]) + .browse(self.company2.id) + .name + ) + + self.env["res.company"].invalidate_cache() + self.user1.write( + {"company_id": self.company2.id, "company_ids": [(4, self.company2.id, 0)]} + ) + companies = ( + self.env["res.company"] + .with_user(self.user1) + .with_context(allowed_website_ids=[self.website2.id]) + .search([]) + ) + self.assertIn(self.company2, companies) + name = ( + self.env["res.company"] + .with_user(self.user1) + .with_context(allowed_website_ids=[self.website2.id]) + .browse(self.company2.id) + .name + ) + self.assertEqual(name, self.company2.name) From d6a155b6b5c75ab0f1db938e3a2d358bbbeb7da7 Mon Sep 17 00:00:00 2001 From: Mitchell Admin Date: Sun, 13 Dec 2020 16:31:54 +0000 Subject: [PATCH 2/4] :rainbow: pre-commit > Made via .github/workflows/DINAR-PORT.yml --- setup/ir_rule_protected/odoo/addons/ir_rule_protected | 1 - setup/ir_rule_website/odoo/addons/ir_rule_website | 1 + setup/{ir_rule_protected => ir_rule_website}/setup.py | 0 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 120000 setup/ir_rule_protected/odoo/addons/ir_rule_protected create mode 120000 setup/ir_rule_website/odoo/addons/ir_rule_website rename setup/{ir_rule_protected => ir_rule_website}/setup.py (100%) diff --git a/setup/ir_rule_protected/odoo/addons/ir_rule_protected b/setup/ir_rule_protected/odoo/addons/ir_rule_protected deleted file mode 120000 index 3b0299b1..00000000 --- a/setup/ir_rule_protected/odoo/addons/ir_rule_protected +++ /dev/null @@ -1 +0,0 @@ -../../../../ir_rule_protected \ No newline at end of file diff --git a/setup/ir_rule_website/odoo/addons/ir_rule_website b/setup/ir_rule_website/odoo/addons/ir_rule_website new file mode 120000 index 00000000..4166a7dc --- /dev/null +++ b/setup/ir_rule_website/odoo/addons/ir_rule_website @@ -0,0 +1 @@ +../../../../ir_rule_website \ No newline at end of file diff --git a/setup/ir_rule_protected/setup.py b/setup/ir_rule_website/setup.py similarity index 100% rename from setup/ir_rule_protected/setup.py rename to setup/ir_rule_website/setup.py From ff140eb8a084bf0b84237f8a743791c002bb9ab8 Mon Sep 17 00:00:00 2001 From: Mitchell Admin Date: Sun, 13 Dec 2020 16:31:59 +0000 Subject: [PATCH 3/4] :arrow_up::one::four: OCA/odoo-module-migrator close #268 > Made via .github/workflows/DINAR-PORT.yml --- ir_rule_website/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ir_rule_website/__manifest__.py b/ir_rule_website/__manifest__.py index b9d9584a..2f0b2222 100644 --- a/ir_rule_website/__manifest__.py +++ b/ir_rule_website/__manifest__.py @@ -6,7 +6,7 @@ "category": "Access", # "live_test_url": "", "images": ["images/ir_rule_website.jpg"], - "version": "13.0.2.0.0", + "version": "14.0.1.0.0", "application": False, "author": "IT-Projects LLC, Ildar Nasyrov", "support": "apps@itpp.dev", From 1b9a1897d4b510f2e7154ea2ae9f61cd31c6d46b Mon Sep 17 00:00:00 2001 From: Denis Mudarisov Date: Fri, 28 May 2021 18:26:12 +0500 Subject: [PATCH 4/4] :book: update docs --- ir_rule_website/README.rst | 2 +- ir_rule_website/__manifest__.py | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/ir_rule_website/README.rst b/ir_rule_website/README.rst index a7965bac..7e0d039b 100644 --- a/ir_rule_website/README.rst +++ b/ir_rule_website/README.rst @@ -40,4 +40,4 @@ Contributors Odoo Apps Store: https://apps.odoo.com/apps/modules/13.0/ir_rule_website -Tested on `Odoo 13.0 `_ +Tested on `Odoo 14.0 `_ diff --git a/ir_rule_website/__manifest__.py b/ir_rule_website/__manifest__.py index 2f0b2222..910615ff 100644 --- a/ir_rule_website/__manifest__.py +++ b/ir_rule_website/__manifest__.py @@ -4,16 +4,13 @@ "name": """Multi-Brand Access Rules""", "summary": """Provide access depending on current website""", "category": "Access", - # "live_test_url": "", "images": ["images/ir_rule_website.jpg"], "version": "14.0.1.0.0", "application": False, "author": "IT-Projects LLC, Ildar Nasyrov", - "support": "apps@itpp.dev", - "website": "https://it-projects.info/team/iledarn", + "support": "help@itpp.dev", + "website": "https://twitter.com/OdooFree", "license": "Other OSI approved licence", # MIT - # "price": 20.00, - # "currency": "EUR", "depends": ["web_website"], "external_dependencies": {"python": [], "bin": []}, "data": [],
+ +