Before this commit user was able to archive the language used by superuser Odoobot by activating different language. Because of which whenever odoobot was in action then the user faced error. Steps to produce: - Install `contacts`. - Settings > Translations > Languages > Choose a language eg: English (UK). - Activate that language and switch to it. - In `contacts` change the language of each contact in the contacts to the newly selected language. - Settings > Translations > Languages > Choose English (US) and archive it. - Settings > User & Companies > User, Apply the filter of Inactive Users. After this commit user would not be able to archive the language used by superuser or the language in which there db was installed. Task-2896526 closes odoo/odoo#149215 X-original-commit: 681fc0a04c7ca625c7120ff2f7b537b75398b23d Related: odoo/enterprise#54209 Signed-off-by: Raphael Collet <rco@odoo.com>
62 lines
2.7 KiB
Python
62 lines
2.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo.tests.common import TransactionCase
|
|
from odoo.exceptions import UserError
|
|
|
|
class test_res_lang(TransactionCase):
|
|
|
|
def test_00_intersperse(self):
|
|
from odoo.addons.base.models.res_lang import intersperse
|
|
|
|
assert intersperse("", []) == ("", 0)
|
|
assert intersperse("0", []) == ("0", 0)
|
|
assert intersperse("012", []) == ("012", 0)
|
|
assert intersperse("1", []) == ("1", 0)
|
|
assert intersperse("12", []) == ("12", 0)
|
|
assert intersperse("123", []) == ("123", 0)
|
|
assert intersperse("1234", []) == ("1234", 0)
|
|
assert intersperse("123456789", []) == ("123456789", 0)
|
|
assert intersperse("&ab%#@1", []) == ("&ab%#@1", 0)
|
|
|
|
assert intersperse("0", []) == ("0", 0)
|
|
assert intersperse("0", [1]) == ("0", 0)
|
|
assert intersperse("0", [2]) == ("0", 0)
|
|
assert intersperse("0", [200]) == ("0", 0)
|
|
|
|
assert intersperse("12345678", [1], '.') == ('1234567.8', 1)
|
|
assert intersperse("12345678", [1], '.') == ('1234567.8', 1)
|
|
assert intersperse("12345678", [2], '.') == ('123456.78', 1)
|
|
assert intersperse("12345678", [2,1], '.') == ('12345.6.78', 2)
|
|
assert intersperse("12345678", [2,0], '.') == ('12.34.56.78', 3)
|
|
assert intersperse("12345678", [-1,2], '.') == ('12345678', 0)
|
|
assert intersperse("12345678", [2,-1], '.') == ('123456.78', 1)
|
|
assert intersperse("12345678", [2,0,1], '.') == ('12.34.56.78', 3)
|
|
assert intersperse("12345678", [2,0,0], '.') == ('12.34.56.78', 3)
|
|
assert intersperse("12345678", [2,0,-1], '.') == ('12.34.56.78', 3)
|
|
assert intersperse("12345678", [3,3,3,3], '.') == ('12.345.678', 2)
|
|
|
|
assert intersperse("abc1234567xy", [2], '.') == ('abc1234567.xy', 1)
|
|
assert intersperse("abc1234567xy8", [2], '.') == ('abc1234567x.y8', 1) # ... w.r.t. here.
|
|
assert intersperse("abc12", [3], '.') == ('abc12', 0)
|
|
assert intersperse("abc12", [2], '.') == ('abc12', 0)
|
|
assert intersperse("abc12", [1], '.') == ('abc1.2', 1)
|
|
|
|
def test_inactive_users_lang_deactivation(self):
|
|
# activate the language en_GB
|
|
language = self.env['res.lang']._activate_lang('en_GB')
|
|
|
|
# assign it to an inactive (new) user
|
|
user = self.env['res.users'].create({
|
|
'name': 'Foo',
|
|
'login': 'foo@example.com',
|
|
'lang': 'en_GB',
|
|
'active': False,
|
|
})
|
|
|
|
# make sure it is only used by that user
|
|
self.assertEqual(self.env['res.users'].with_context(active_test=False).search([('lang', '=', 'en_GB')]), user)
|
|
|
|
with self.assertRaises(UserError):
|
|
language.active = False
|