diff --git a/muk_security/README.rst b/muk_security/README.rst
new file mode 100644
index 0000000..447ec0b
--- /dev/null
+++ b/muk_security/README.rst
@@ -0,0 +1,120 @@
+============
+MuK Security
+============
+
+Technical module to provide some utility and security features that can be used
+in other applications. This module has no direct effect on the running system.
+
+Installation
+============
+
+To install this module, you need to:
+
+Download the module and add it to your Odoo addons folder. Afterward, log on to
+your Odoo server and go to the Apps menu. Trigger the debug mode and update the
+list by clicking on the "Update Apps List" link. Now install the module by
+clicking on the install button.
+
+Another way to install this module is via the package management for Python
+(`PyPI `_).
+
+To install our modules using the package manager make sure
+`odoo-autodiscover `_ is installed
+correctly. Then open a console and install the module by entering the following
+command:
+
+``pip install --extra-index-url https://nexus.mukit.at/repository/odoo/simple ``
+
+The module name consists of the Odoo version and the module name, where
+underscores are replaced by a dash.
+
+**Module:**
+
+``odoo-addon-``
+
+**Example:**
+
+``sudo -H pip3 install --extra-index-url https://nexus.mukit.at/repository/odoo/simple odoo11-addon-muk-utils``
+
+Once the installation has been successfully completed, the app is already in the
+correct folder. Log on to your Odoo server and go to the Apps menu. Trigger the
+debug mode and update the list by clicking on the "Update Apps List" link. Now
+install the module by clicking on the install button.
+
+The biggest advantage of this variant is that you can now also update the app
+using the "pip" command. To do this, enter the following command in your console:
+
+``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple ``
+
+When the process is finished, restart your server and update the application in
+Odoo. The steps are the same as for the installation only the button has changed
+from "Install" to "Upgrade".
+
+You can also view available Apps directly in our `repository `_
+and find a more detailed installation guide on our `website `_.
+
+For modules licensed under OPL-1, you will receive access data when you purchase
+the module. If the modules were not purchased directly from
+`MuK IT `_ please contact our support (support@mukit.at)
+with a confirmation of purchase to receive the corresponding access data.
+
+Upgrade
+============
+
+To upgrade this module, you need to:
+
+Download the module and add it to your Odoo addons folder. Restart the server
+and log on to your Odoo server. Select the Apps menu and upgrade the module by
+clicking on the upgrade button.
+
+If you installed the module using the "pip" command, you can also update the
+module in the same way. Just type the following command into the console:
+
+``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple ``
+
+When the process is finished, restart your server and update the application in
+Odoo, just like you would normally.
+
+Configuration
+=============
+
+No additional configuration is needed to use this module.
+
+Usage
+=============
+
+This module has no direct visible effect on the system. It provide security features.
+
+Credits
+=======
+
+Contributors
+------------
+
+* Mathias Markl
+
+Images
+------------
+
+Some pictures are based on or inspired by the icon set of Font Awesome:
+
+* `Font Awesome `_
+
+Projects
+------------
+
+Parts of the module are based on or inspired by:
+
+* `Suspend Security `_
+
+Author & Maintainer
+-------------------
+
+This module is maintained by the `MuK IT GmbH `_.
+
+MuK IT is an Austrian company specialized in customizing and extending Odoo.
+We develop custom solutions for your individual needs to help you focus on
+your strength and expertise to grow your business.
+
+If you want to get in touch please contact us via mail
+(sale@mukit.at) or visit our website (https://mukit.at).
diff --git a/muk_security/__manifest__.py b/muk_security/__manifest__.py
index 6b9592f..ff36490 100644
--- a/muk_security/__manifest__.py
+++ b/muk_security/__manifest__.py
@@ -20,7 +20,7 @@
{
"name": "MuK Security",
"summary": """Security Features""",
- "version": "12.0.1.5.4",
+ "version": "12.0.1.5.5",
"category": "Extra Tools",
"license": "AGPL-3",
"website": "http://www.mukit.at",
diff --git a/muk_security/models/res_users.py b/muk_security/models/res_users.py
index e4b2402..a5b6f04 100644
--- a/muk_security/models/res_users.py
+++ b/muk_security/models/res_users.py
@@ -24,6 +24,8 @@ from odoo import tools, _
from odoo.exceptions import ValidationError
from odoo.addons.muk_security.tools.security import NoSecurityUid
+from odoo.addons.muk_security.tools.security import convert_security_uid
+
_logger = logging.getLogger(__name__)
@@ -35,11 +37,10 @@ class AccessUser(models.Model):
# Functions
#----------------------------------------------------------
+ def browse(self, arg=None, *args, **kwargs):
+ return super(AccessUser, self).browse(arg=convert_security_uid(arg), **kwargs)
+
@classmethod
def _browse(cls, ids, *args, **kwargs):
- def convert_security_uid(id):
- if isinstance(id, NoSecurityUid):
- return super(NoSecurityUid, id).__int__()
- return id
access_ids = [convert_security_uid(id) for id in ids]
return super(AccessUser, cls)._browse(access_ids, *args, **kwargs)
\ No newline at end of file
diff --git a/muk_security/tests/test_suspend_security.py b/muk_security/tests/test_suspend_security.py
index 4823889..c05fdff 100644
--- a/muk_security/tests/test_suspend_security.py
+++ b/muk_security/tests/test_suspend_security.py
@@ -45,4 +45,25 @@ class SuspendSecurityTestCase(common.TransactionCase):
self.assertEqual(tester.write_uid.id, user_id)
def test_normalize(self):
- self.env['res.users'].browse(self.env['res.users'].suspend_security().env.uid)
\ No newline at end of file
+ self.env['res.users'].browse(self.env['res.users'].suspend_security().env.uid)
+
+ def test_search_one2many(self):
+ user = self.env.ref('base.user_demo')
+ model = self.env['res.partner'].sudo(user.id)
+ self.assertTrue(model.env.user.id == user.id)
+ normal_domain = [('user_ids.id', '=', model.env.uid)]
+ suspend_domain = [('user_ids.id', '=', model.suspend_security().env.uid)]
+ normal_partner = model.search(normal_domain, limit=1)
+ suspend_partner = model.search(suspend_domain, limit=1)
+ self.assertEqual(normal_partner, suspend_partner)
+ normal_domain = [('user_ids', '=', model.env.uid)]
+ suspend_domain = [('user_ids', '=', model.suspend_security().env.uid)]
+ normal_partner = model.search(normal_domain, limit=1)
+ suspend_partner = model.search(suspend_domain, limit=1)
+ self.assertEqual(normal_partner, suspend_partner)
+ normal_domain = [('user_ids.id', 'in', [model.env.uid])]
+ suspend_domain = [('user_ids.id', 'in', [model.suspend_security().env.uid])]
+ normal_partner = model.search(normal_domain, limit=1)
+ suspend_partner = model.search(suspend_domain, limit=1)
+ self.assertEqual(normal_partner, suspend_partner)
+
\ No newline at end of file
diff --git a/muk_security/tools/security.py b/muk_security/tools/security.py
index ad90aa0..6959e14 100644
--- a/muk_security/tools/security.py
+++ b/muk_security/tools/security.py
@@ -17,6 +17,19 @@
#
###################################################################################
+#----------------------------------------------------------
+# Helper
+#----------------------------------------------------------
+
+def convert_security_uid(id):
+ if isinstance(id, NoSecurityUid):
+ return super(NoSecurityUid, id).__int__()
+ return id
+
+#----------------------------------------------------------
+# Model
+#----------------------------------------------------------
+
class NoSecurityUid(int):
def __int__(self):
@@ -26,9 +39,6 @@ class NoSecurityUid(int):
if isinstance(other, int):
return False
return super(NoSecurityUid, self).__int__() == other
-
- def __iter__(self):
- yield super(NoSecurityUid, self).__int__()
-
+
def __hash__(self):
return super(NoSecurityUid, self).__hash__()
\ No newline at end of file