summaryrefslogtreecommitdiff
path: root/odoo/addons/base
diff options
context:
space:
mode:
authorRaphael Collet <rco@odoo.com>2018-09-26 15:26:29 +0200
committerRaphael Collet <rco@odoo.com>2018-09-27 09:54:28 +0200
commit3a30391e9dbc424f1999d8a1b0b14e67c8b2f446 (patch)
tree3e7bb69db89c2fb2b989746cdd608f286c85f419 /odoo/addons/base
parent13d3456791d5ebaf3ff156097547627d755e594e (diff)
[FIX] base: superuser cannot become active
Diffstat (limited to 'odoo/addons/base')
-rw-r--r--odoo/addons/base/models/res_users.py10
-rw-r--r--odoo/addons/base/tests/test_base.py12
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})