[FIX] web_company_color: Recalculated color when we do not want

If we change something with base.document.layout wizard, this will launch the colors computing even without changing the logo. This procedure will change the value of the colors if they were set by hand.

This change forces the user to press a button to recompute the colors and avoid possible undesired changes.

TT34902
pull/3025/head
CarlosRoca13 2022-03-03 11:57:26 +01:00 committed by ArnauCForgeFlow
parent cb2a0d9f60
commit 1372c499b5
6 changed files with 118 additions and 22 deletions

View File

@ -0,0 +1,75 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_company_color
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-02 15:55+0000\n"
"PO-Revision-Date: 2022-03-02 16:56+0100\n"
"Last-Translator: claudiagn <claudia.gargallo@qubiq.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 2.3\n"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid ""
"<span class=\"fa fa-info fa-2x\"/>\n"
" In order for the changes to take effect, please "
"refresh\n"
" the page."
msgstr ""
"<span class = \"fa fa-info fa-2x\" />\n"
" Para que los cambios surtan efecto, actualice\n"
" la página."
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_res_company
msgid "Companies"
msgstr "Compañías"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__company_colors
msgid "Company Colors"
msgstr "Colores de la compañía"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Company Styles"
msgstr "Estilos de compañía"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Compute colors from logo"
msgstr "Calcular colores a partir del logo"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_bg
msgid "Navbar Background Color"
msgstr "Color de fondo de la barra de navegación"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_bg_hover
msgid "Navbar Background Color Hover"
msgstr "Desplazamiento del color de fondo de la barra de navegación"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Navbar Colors"
msgstr "Colores de la barra de navegación"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_text
msgid "Navbar Text Color"
msgstr "Color de texto de la barra de navegación"
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_ir_qweb
msgid "Qweb"
msgstr "Qweb"

View File

@ -6,6 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 15.0\n" "Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-02 15:55+0000\n"
"PO-Revision-Date: 2022-03-02 15:55+0000\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -36,6 +38,11 @@ msgstr ""
msgid "Company Styles" msgid "Company Styles"
msgstr "" msgstr ""
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Compute colors from logo"
msgstr ""
#. module: web_company_color #. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_bg #: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_bg
msgid "Navbar Background Color" msgid "Navbar Background Color"

View File

@ -74,9 +74,20 @@ class ResCompany(models.Model):
"color_navbar_bg_hover", "color_navbar_bg_hover",
"color_navbar_text", "color_navbar_text",
) )
if "logo" in values: result = super().write(values)
if values["logo"]: if any([field in values for field in fields_to_check]):
_r, _g, _b = image_to_rgb(convert_to_image(values["logo"])) self.scss_create_or_update_attachment()
else:
result = super().write(values)
return result
def button_compute_color(self):
self.ensure_one()
values = self.default_get(
["color_navbar_bg", "color_navbar_bg_hover", "color_navbar_text"]
)
if self.logo:
_r, _g, _b = image_to_rgb(convert_to_image(self.logo))
# Make color 10% darker # Make color 10% darker
_h, _l, _s = rgb_to_hls(_r, _g, _b) _h, _l, _s = rgb_to_hls(_r, _g, _b)
_l = max(0, _l - 0.1) _l = max(0, _l - 0.1)
@ -91,16 +102,7 @@ class ResCompany(models.Model):
"color_navbar_text": "#000" if _a < 0.5 else "#fff", "color_navbar_text": "#000" if _a < 0.5 else "#fff",
} }
) )
else: self.write(values)
values.update(self.default_get(fields_to_check))
result = super().write(values)
if any([field in values for field in fields_to_check]):
self.scss_create_or_update_attachment()
else:
result = super().write(values)
return result
def _scss_get_sanitized_values(self): def _scss_get_sanitized_values(self):
self.ensure_one() self.ensure_one()

View File

@ -1,6 +1,10 @@
* Jordi Ballester Alomar <jordi.ballester@forgeflow.com> (ForgeFlow) * Jordi Ballester Alomar <jordi.ballester@forgeflow.com> (ForgeFlow)
* Lois Rilo <lois.rilo@forgeflow.com> (ForgeFlow) * Lois Rilo <lois.rilo@forgeflow.com> (ForgeFlow)
* Simone Orsi <simone.orsi@camptocamp.com> * Simone Orsi <simone.orsi@camptocamp.com>
* Jairo Llopis <jairo.llopis@tecnativa.com>
* Iván Antón <ozono@ozonomultimedia.com> * Iván Antón <ozono@ozonomultimedia.com>
* Bernat Puig <bernat.puig@forgeflow.com> (ForgeFlow) * Bernat Puig <bernat.puig@forgeflow.com> (ForgeFlow)
* `Tecnativa <https://www.tecnativa.com>`_:
* Jairo Llopis
* Alexandre Díaz
* Carlos Roca

View File

@ -25,6 +25,7 @@ class TestResCompany(common.TransactionCase):
) )
self._test_scss_attachment() self._test_scss_attachment()
company_id.sudo().write({"logo": self.IMG_GREEN}) company_id.sudo().write({"logo": self.IMG_GREEN})
company_id.button_compute_color()
self.assertEqual( self.assertEqual(
company_id.color_navbar_bg, "#00ff00", "Invalid Navbar Background Color" company_id.color_navbar_bg, "#00ff00", "Invalid Navbar Background Color"
) )
@ -36,6 +37,7 @@ class TestResCompany(common.TransactionCase):
def test_change_logo(self): def test_change_logo(self):
company_id = self.env["res.company"].search([], limit=1) company_id = self.env["res.company"].search([], limit=1)
company_id.sudo().write({"logo": self.IMG_GREEN}) company_id.sudo().write({"logo": self.IMG_GREEN})
company_id.button_compute_color()
self.assertEqual( self.assertEqual(
company_id.color_navbar_bg, "#00ff00", "Invalid Navbar Background Color" company_id.color_navbar_bg, "#00ff00", "Invalid Navbar Background Color"
) )

View File

@ -19,6 +19,12 @@
<field name="color_navbar_bg" widget="color" /> <field name="color_navbar_bg" widget="color" />
<field name="color_navbar_bg_hover" widget="color" /> <field name="color_navbar_bg_hover" widget="color" />
<field name="color_navbar_text" widget="color" /> <field name="color_navbar_text" widget="color" />
<button
class="btn-primary"
name="button_compute_color"
type="object"
string="Compute colors from logo"
/>
</group> </group>
<div class="alert alert-info info_icon" role="alert"> <div class="alert alert-info info_icon" role="alert">
<span class="fa fa-info fa-2x" /> <span class="fa fa-info fa-2x" />