[IMP] website: cannot deactivate language if set in language_ids for website

closes odoo/odoo#31520

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
This commit is contained in:
Pragya Ladda
2019-03-12 10:14:29 +00:00
parent ea70cb2f1f
commit 8e2f9a4fe2
3 changed files with 21 additions and 2 deletions
+1
View File
@@ -18,3 +18,4 @@ from . import res_company
from . import res_partner
from . import res_users
from . import res_config_settings
from . import res_lang
+4 -2
View File
@@ -18,7 +18,7 @@ class ResConfigSettings(models.TransientModel):
website_domain = fields.Char('Website Domain', related='website_id.domain', readonly=False)
website_country_group_ids = fields.Many2many(related='website_id.country_group_ids', readonly=False)
website_company_id = fields.Many2one(related='website_id.company_id', string='Website Company', readonly=False)
language_ids = fields.Many2many(related='website_id.language_ids', relation='res.lang', readonly=False)
language_ids = fields.Many2many(related='website_id.language_ids', relation='res.lang', readonly=False, required=True)
language_count = fields.Integer(string='Number of languages', compute='_compute_language_count', readonly=True)
website_default_lang_id = fields.Many2one(
string='Default language', related='website_id.default_lang_id', readonly=False,
@@ -106,7 +106,9 @@ class ResConfigSettings(models.TransientModel):
def _onchange_language_ids(self):
# If current default language is removed from language_ids
# update the website_default_lang_id
if self.language_ids and self.website_default_lang_id not in self.language_ids:
if not self.language_ids:
self.website_default_lang_id = False
elif self.website_default_lang_id not in self.language_ids:
self.website_default_lang_id = self.language_ids[0]
@api.depends('language_ids')
+16
View File
@@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, models, _
from odoo.exceptions import UserError
class Lang(models.Model):
_inherit = "res.lang"
@api.multi
def write(self, vals):
if 'active' in vals and not vals['active']:
if self.env['website'].search([('language_ids', 'in', self._ids)]):
raise UserError(_("Cannot deactivate a language that is currently used on a website."))
return super(Lang, self).write(vals)