diff options
| author | Raphael Collet <rco@odoo.com> | 2018-09-26 15:26:29 +0200 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2018-09-27 09:54:28 +0200 |
| commit | 3a30391e9dbc424f1999d8a1b0b14e67c8b2f446 (patch) | |
| tree | 3e7bb69db89c2fb2b989746cdd608f286c85f419 /odoo/addons/base | |
| parent | 13d3456791d5ebaf3ff156097547627d755e594e (diff) | |
[FIX] base: superuser cannot become active
Diffstat (limited to 'odoo/addons/base')
| -rw-r--r-- | odoo/addons/base/models/res_users.py | 10 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_base.py | 12 |
2 files changed, 15 insertions, 7 deletions
diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index b541494d989..90b4003156b 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -431,12 +431,10 @@ class Users(models.Model): @api.multi def write(self, values): - if values.get('active') == False: - for user in self: - if user.id == SUPERUSER_ID: - raise UserError(_("You cannot deactivate the admin user.")) - elif user.id == self._uid: - raise UserError(_("You cannot deactivate the user you're currently logged in as.")) + if values.get('active') and SUPERUSER_ID in self._ids: + raise UserError(_("You cannot activate the superuser.")) + if values.get('active') == False and self._uid in self._ids: + raise UserError(_("You cannot deactivate the user you're currently logged in as.")) if values.get('active'): for user in self: diff --git a/odoo/addons/base/tests/test_base.py b/odoo/addons/base/tests/test_base.py index 69b9bbdeb8f..5e1a24958bf 100644 --- a/odoo/addons/base/tests/test_base.py +++ b/odoo/addons/base/tests/test_base.py @@ -4,7 +4,8 @@ import ast import unittest -from odoo.exceptions import ValidationError +from odoo import SUPERUSER_ID +from odoo.exceptions import UserError, ValidationError from odoo.tests.common import TransactionCase, tagged from odoo.tools import mute_logger from odoo.tools.safe_eval import safe_eval, const_eval @@ -556,3 +557,12 @@ class TestGroups(TransactionCase): a = self.env['res.groups'].with_context(lang='en_US').create({'name': 'A'}) b = a.copy() self.assertFalse(a.name == b.name) + + +class TestUsers(TransactionCase): + def test_superuser(self): + """ The superuser is inactive and must remain as such. """ + user = self.env['res.users'].browse(SUPERUSER_ID) + self.assertFalse(user.active) + with self.assertRaises(UserError): + user.write({'active': True}) |
