From cc114ab1ac9005cbc74561d6e4f33e8a0836cc04 Mon Sep 17 00:00:00 2001 From: nie Date: Fri, 16 Oct 2020 15:09:38 +0000 Subject: [PATCH] [FIX] base: Contacts still have deactivated language Steps to reproduce the bug: - Install web_studio, contacts - Activate language English (UK) - Switch all users' language to UK - Deactivate language English (US) - Via Studio, add a related field to a contact: Self > Language Bug: Traceback: contacts still have en_US as language and it's deactivated. opw:2350362 closes odoo/odoo#60279 X-original-commit: 47ec3585f50f030025b39031807be50a9299bcd6 Signed-off-by: Nicolas Martinelli (nim) Signed-off-by: backspac --- odoo/addons/base/i18n/base.pot | 6 ++++++ odoo/addons/base/models/res_lang.py | 4 +++- odoo/addons/base/tests/test_translate.py | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/odoo/addons/base/i18n/base.pot b/odoo/addons/base/i18n/base.pot index c3819e0cb5a..2758c317b4d 100644 --- a/odoo/addons/base/i18n/base.pot +++ b/odoo/addons/base/i18n/base.pot @@ -9074,6 +9074,12 @@ msgid "" "records manually and try importing again." msgstr "" +#. module: base +#: code:addons/base/models/res_lang.py:0 +#, python-format +msgid "Cannot deactivate a language that is currently used by contacts." +msgstr "" + #. module: base #: code:addons/base/models/res_lang.py:0 #, python-format diff --git a/odoo/addons/base/models/res_lang.py b/odoo/addons/base/models/res_lang.py index 7ab93e46fb7..16eb59b95cb 100644 --- a/odoo/addons/base/models/res_lang.py +++ b/odoo/addons/base/models/res_lang.py @@ -278,8 +278,10 @@ class Lang(models.Model): if 'code' in vals and any(code != vals['code'] for code in lang_codes): raise UserError(_("Language code cannot be modified.")) if vals.get('active') == False: - if self.env['res.users'].search([('lang', 'in', lang_codes)]): + if self.env['res.users'].search_count([('lang', 'in', lang_codes)]): raise UserError(_("Cannot deactivate a language that is currently used by users.")) + if self.env['res.partner'].search_count([('lang', 'in', lang_codes)]): + raise UserError(_("Cannot deactivate a language that is currently used by contacts.")) # delete linked ir.default specifying default partner's language self.env['ir.default'].discard_values('res.partner', 'lang', lang_codes) diff --git a/odoo/addons/base/tests/test_translate.py b/odoo/addons/base/tests/test_translate.py index 276c05bf7ba..e9b9b3a935f 100644 --- a/odoo/addons/base/tests/test_translate.py +++ b/odoo/addons/base/tests/test_translate.py @@ -437,7 +437,7 @@ class TestTranslationWrite(TransactionCase): def test_03_fr_single(self): self.env['res.lang']._activate_lang('fr_FR') - self.env['res.users'].with_context(active_test=False).search([]).write({'lang': 'fr_FR'}) + self.env['res.partner'].with_context(active_test=False).search([]).write({'lang': 'fr_FR'}) self.env.ref('base.lang_en').active = False langs = self.env['res.lang'].get_installed() @@ -483,7 +483,7 @@ class TestTranslationWrite(TransactionCase): def test_04_fr_multi_no_en(self): self.env['res.lang']._activate_lang('fr_FR') self.env['res.lang']._activate_lang('es_ES') - self.env['res.users'].with_context(active_test=False).search([]).write({'lang': 'fr_FR'}) + self.env['res.partner'].with_context(active_test=False).search([]).write({'lang': 'fr_FR'}) self.env.ref('base.lang_en').active = False langs = self.env['res.lang'].get_installed()