[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) <nim@odoo.com>
Signed-off-by: backspac <backspac@users.noreply.github.com>
This commit is contained in:
nie
2020-10-19 13:36:27 +00:00
parent f646b11c8d
commit cc114ab1ac
3 changed files with 11 additions and 3 deletions
+6
View File
@@ -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
+3 -1
View File
@@ -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)
+2 -2
View File
@@ -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()