From c56e9649343808faf1ed9a7fc70fb8f4f6bdf22d Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Wed, 1 Jul 2020 18:45:10 +0200 Subject: [PATCH] [IMP] partner_contact_lang: Change language when assigning parent if virtual record If the record hasn't been created yet, we can assume that the language set currently is the default one, so we can switch it to the parent one. --- partner_contact_lang/README.rst | 6 +++--- partner_contact_lang/models/res_partner.py | 18 +++++++++++------- partner_contact_lang/readme/DESCRIPTION.rst | 6 +++--- .../static/description/index.html | 16 +++++++++------- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/partner_contact_lang/README.rst b/partner_contact_lang/README.rst index 16e211b39..5902a95e0 100644 --- a/partner_contact_lang/README.rst +++ b/partner_contact_lang/README.rst @@ -32,11 +32,11 @@ This module fills this gap, and also provides other facilities for the contact language management: #. Put the language of the parent company when the contact doesn't have a -language and this parent company is assigned. + language and this parent company is assigned. #. When the company changes the language, it fills with the same language all -the contacts that don't have any. + the contacts that don't have any. #. Show the language in the inner narrowed Contact form and -set the new conctact with a different language if needed. + set the new conctact with a different language if needed. #. Search and also group contacts by their language. **Table of contents** diff --git a/partner_contact_lang/models/res_partner.py b/partner_contact_lang/models/res_partner.py index acbab0db3..b28f64d4f 100644 --- a/partner_contact_lang/models/res_partner.py +++ b/partner_contact_lang/models/res_partner.py @@ -1,5 +1,5 @@ -# Copyright 2016 Tecnativa - Pedro M. Baeza -# Copyright 2017 Tecnativa - Vicent Cubells +# Copyright 2016-2020 Tecnativa - Pedro M. Baeza +# Copyright 2017 Tecnativa - Vicent Cubells # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import api, fields, models @@ -28,13 +28,17 @@ class ResPartner(models.Model): @api.onchange("parent_id") def onchange_parent_id(self): """Change language if the parent company changes and there's no - language defined yet""" + language defined yet. + + A special case is made for virtual records, where default lang value + is assigned at startup, so we always overwrite language in that case. + """ res = super(ResPartner, self).onchange_parent_id() if ( - self.parent_id - and self.parent_id != self - and not self.lang - and self.parent_id.lang + self.parent_id.lang and ( + not self.lang or + (isinstance(self.id, models.NewId) and not self._origin) + ) and self.parent_id.lang != self.lang ): self.lang = self.parent_id.lang return res diff --git a/partner_contact_lang/readme/DESCRIPTION.rst b/partner_contact_lang/readme/DESCRIPTION.rst index 85d1e6d78..1df4a4755 100644 --- a/partner_contact_lang/readme/DESCRIPTION.rst +++ b/partner_contact_lang/readme/DESCRIPTION.rst @@ -5,9 +5,9 @@ This module fills this gap, and also provides other facilities for the contact language management: #. Put the language of the parent company when the contact doesn't have a -language and this parent company is assigned. + language and this parent company is assigned. #. When the company changes the language, it fills with the same language all -the contacts that don't have any. + the contacts that don't have any. #. Show the language in the inner narrowed Contact form and -set the new conctact with a different language if needed. + set the new conctact with a different language if needed. #. Search and also group contacts by their language. diff --git a/partner_contact_lang/static/description/index.html b/partner_contact_lang/static/description/index.html index 0697b2610..3b69ab884 100644 --- a/partner_contact_lang/static/description/index.html +++ b/partner_contact_lang/static/description/index.html @@ -372,13 +372,15 @@ ul.auto-toc { form, but it doesn’t allow to change it once created.

This module fills this gap, and also provides other facilities for the contact language management:

-

#. Put the language of the parent company when the contact doesn’t have a -language and this parent company is assigned. -#. When the company changes the language, it fills with the same language all -the contacts that don’t have any. -#. Show the language in the inner narrowed Contact form and -set the new conctact with a different language if needed. -#. Search and also group contacts by their language.

+
    +
  1. Put the language of the parent company when the contact doesn’t have a +language and this parent company is assigned.
  2. +
  3. When the company changes the language, it fills with the same language all +the contacts that don’t have any.
  4. +
  5. Show the language in the inner narrowed Contact form and +set the new conctact with a different language if needed.
  6. +
  7. Search and also group contacts by their language.
  8. +

Table of contents