Browse Source

publish muk_security - 12.0

pull/30/head
MuK IT GmbH 6 years ago
parent
commit
9129788fb7
  1. 120
      muk_security/README.rst
  2. 2
      muk_security/__manifest__.py
  3. 9
      muk_security/models/res_users.py
  4. 23
      muk_security/tests/test_suspend_security.py
  5. 18
      muk_security/tools/security.py

120
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 <https://pypi.org/project/pip/>`_).
To install our modules using the package manager make sure
`odoo-autodiscover <https://pypi.org/project/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 <module>``
The module name consists of the Odoo version and the module name, where
underscores are replaced by a dash.
**Module:**
``odoo<version>-addon-<module_name>``
**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 <module>``
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 <https://nexus.mukit.at/#browse/browse:odoo>`_
and find a more detailed installation guide on our `website <https://mukit.at/page/open-source>`_.
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 <https://www.mukit.at/>`_ 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 <module>``
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 <mathias.markl@mukit.at>
Images
------------
Some pictures are based on or inspired by the icon set of Font Awesome:
* `Font Awesome <https://fontawesome.com>`_
Projects
------------
Parts of the module are based on or inspired by:
* `Suspend Security <https://github.com/OCA/server-backend>`_
Author & Maintainer
-------------------
This module is maintained by the `MuK IT GmbH <https://www.mukit.at/>`_.
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).

2
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",

9
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)

23
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)
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)

18
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__()
Loading…
Cancel
Save