mig web_company_color by yahya

This commit is contained in:
yahyaprogrammer123 2025-10-04 17:04:16 +03:00
parent 46d68a026b
commit 08d8ebbc8a
28 changed files with 2293 additions and 0 deletions

View File

@ -0,0 +1,96 @@
=================
Web Company Color
=================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:ef2b315a370c90590fd2d22c5aed6aa9c7aa6b10b5534131cab59d90d62c07c6
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
:target: https://github.com/OCA/web/tree/14.0/web_company_color
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_company_color
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=14.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module change navbar colors based in the company logo colors.
**Table of contents**
.. contents::
:local:
Usage
=====
Go to company record and set a logo. Can see/modify applied colors on the "Navbar" section.
For optimal results use images with alpha channel.
Known issues / Roadmap
======================
White color is omitted in the addition operation to support images without alpha channel.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/web/issues/new?body=module:%20web_company_color%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Alexandre Díaz
Contributors
~~~~~~~~~~~~
* Jordi Ballester Alomar <jordi.ballester@forgeflow.com> (ForgeFlow)
* Lois Rilo <lois.rilo@forgefloww.com> (ForgeFlow)
* Simone Orsi <simone.orsi@camptocamp.com>
* Iván Antón <ozono@ozonomultimedia.com>
* `Tecnativa <https://www.tecnativa.com>`_:
* Jairo Llopis
* Alexandre Díaz
* Carlos Roca
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/web <https://github.com/OCA/web/tree/14.0/web_company_color>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@ -0,0 +1,5 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models
from .hooks import post_init_hook, uninstall_hook
from . import utils

View File

@ -0,0 +1,18 @@
# Odoo, Open Source Web Company Color
# Copyright (C) 2019 Alexandre Díaz <dev@redneboa.es>
#
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).#
{
"name": "Web Company Color",
'category' : 'Odex25-base',
"version": "18.0.1.0.3",
"author": "Alexandre Díaz, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/web",
"depends": ["web", "base_sparse_field"],
"data": ["view/assets.xml", "view/res_company.xml"],
"uninstall_hook": "uninstall_hook",
"post_init_hook": "post_init_hook",
"license": "AGPL-3",
"auto_install": False,
"installable": True,
}

View File

@ -0,0 +1,14 @@
# Copyright 2019 Alexandre Díaz <dev@redneboa.es>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import SUPERUSER_ID, api
from .models.res_company import URL_BASE
def uninstall_hook(env):
env["ir.attachment"].search([("url", "=like", f"{URL_BASE}%")]).unlink()
def post_init_hook(env):
env["res.company"].search([]).scss_create_or_update_attachment()

View File

@ -0,0 +1,126 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_company_color
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-04-13 11:05+0000\n"
"Last-Translator: Noel estudillo <noelestudilloviera@gmail.com>\n"
"Language-Team: none\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\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"
" IPer tal que els canvis tinguin efecte, actualitzeu-"
"lo\n"
" la pàgina."
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg
msgid "Button Background Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg_hover
msgid "Button Background Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_text
msgid "Button Text Color"
msgstr ""
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Colors"
msgstr ""
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_res_company
msgid "Companies"
msgstr "Companyies"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__company_colors
msgid "Company Colors"
msgstr "Companyia Colors"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Company Styles"
msgstr "Estils d'empresa"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Compute colors from logo"
msgstr "Calcula els colors a partir del logotip"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__display_name
#: model:ir.model.fields,field_description:web_company_color.field_res_company__display_name
msgid "Display Name"
msgstr "Nom de visualització"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__id
#: model:ir.model.fields,field_description:web_company_color.field_res_company__id
msgid "ID"
msgstr "ID"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb____last_update
#: model:ir.model.fields,field_description:web_company_color.field_res_company____last_update
msgid "Last Modified on"
msgstr "Última modificació el"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text
msgid "Link Text Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text_hover
msgid "Link Text Color Hover"
msgstr ""
#. 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 fons de la barra de navegació"
#. 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 "Color de fons de la barra de navegació"
#. 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 del text de la barra de navegació"
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_ir_qweb
msgid "Qweb"
msgstr "Qweb"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__scss_modif_timestamp
msgid "SCSS Modif. Timestamp"
msgstr ""
#~ msgid "Navbar Colors"
#~ msgstr "Colors de la barra de navegació"

View File

@ -0,0 +1,126 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_company_color
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-10-13 20:28+0000\n"
"Last-Translator: Corneliuus <cornelius@clk-it.de>\n"
"Language-Team: none\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\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"
" Damit die Änderungen wirksam werden, aktualisieren "
"Sie bitte\n"
" Sie die Seite."
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg
msgid "Button Background Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg_hover
msgid "Button Background Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_text
msgid "Button Text Color"
msgstr ""
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Colors"
msgstr ""
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_res_company
msgid "Companies"
msgstr "Unternehmen"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__company_colors
msgid "Company Colors"
msgstr "Unternehmensfarben"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Company Styles"
msgstr "Unternehmensstile"
#. 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
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__display_name
#: model:ir.model.fields,field_description:web_company_color.field_res_company__display_name
msgid "Display Name"
msgstr "Anzeigename"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__id
#: model:ir.model.fields,field_description:web_company_color.field_res_company__id
msgid "ID"
msgstr "ID"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb____last_update
#: model:ir.model.fields,field_description:web_company_color.field_res_company____last_update
msgid "Last Modified on"
msgstr "Zuletzt bearbeitet am"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text
msgid "Link Text Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text_hover
msgid "Link Text Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_bg
msgid "Navbar Background Color"
msgstr "Navbar-Hintergrundfarbe"
#. 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 "Navbar Hintergrundfarbe Hover"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_text
msgid "Navbar Text Color"
msgstr "Navbar Textfarbe"
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_ir_qweb
msgid "Qweb"
msgstr "Qweb"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__scss_modif_timestamp
msgid "SCSS Modif. Timestamp"
msgstr ""
#~ msgid "Navbar Colors"
#~ msgstr "Navbar-Farben"

View File

@ -0,0 +1,126 @@
# 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.fields,field_description:web_company_color.field_res_company__color_button_bg
msgid "Button Background Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg_hover
msgid "Button Background Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_text
msgid "Button Text Color"
msgstr ""
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Colors"
msgstr ""
#. 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_ir_qweb__display_name
#: model:ir.model.fields,field_description:web_company_color.field_res_company__display_name
msgid "Display Name"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__id
#: model:ir.model.fields,field_description:web_company_color.field_res_company__id
msgid "ID"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb____last_update
#: model:ir.model.fields,field_description:web_company_color.field_res_company____last_update
msgid "Last Modified on"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text
msgid "Link Text Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text_hover
msgid "Link Text Color Hover"
msgstr ""
#. 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: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"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__scss_modif_timestamp
msgid "SCSS Modif. Timestamp"
msgstr ""
#~ msgid "Navbar Colors"
#~ msgstr "Colores de la barra de navegación"

View File

@ -0,0 +1,126 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_company_color
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-10-06 16:36+0000\n"
"Last-Translator: Ignacio Buioli <ibuioli@gmail.com>\n"
"Language-Team: none\n"
"Language: es_AR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\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 tengan efecto, por favor "
"recargue\n"
" la página."
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg
msgid "Button Background Color"
msgstr "Color de Fondo del Botón"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg_hover
msgid "Button Background Color Hover"
msgstr "Color de Fondo del Botón por Encima"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_text
msgid "Button Text Color"
msgstr "Color del Texto del Botón"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Colors"
msgstr "Colores"
#. 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 la 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 "Computar colores a partir del logo"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__display_name
#: model:ir.model.fields,field_description:web_company_color.field_res_company__display_name
msgid "Display Name"
msgstr "Nombre Mostrado"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__id
#: model:ir.model.fields,field_description:web_company_color.field_res_company__id
msgid "ID"
msgstr "ID"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb____last_update
#: model:ir.model.fields,field_description:web_company_color.field_res_company____last_update
msgid "Last Modified on"
msgstr "Última Modificación el"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text
msgid "Link Text Color"
msgstr "Color del Texto del Vínculo"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text_hover
msgid "Link Text Color Hover"
msgstr "Color del Texto del Vínculo por Encima"
#. 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 "Color de Fondo al Pasar el Cursor por Encima"
#. 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 del 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"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__scss_modif_timestamp
msgid "SCSS Modif. Timestamp"
msgstr "SCSS Huella de Tiempo de Modificación"
#~ msgid "Navbar Colors"
#~ msgstr "Colores de la Barra de Navegación"

View File

@ -0,0 +1,126 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_company_color
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-09-19 08:11+0000\n"
"Last-Translator: Claude R Perrin <claude@perrin.it>\n"
"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.3.2\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"
" Pour que les modifications prennent effet, veuillez "
"recharger\n"
" la page."
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg
msgid "Button Background Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg_hover
msgid "Button Background Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_text
msgid "Button Text Color"
msgstr ""
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Colors"
msgstr ""
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_res_company
msgid "Companies"
msgstr "Sociétés"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__company_colors
msgid "Company Colors"
msgstr "Couleurs de la société"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Company Styles"
msgstr "Styles de société"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Compute colors from logo"
msgstr "Générer les couleurs à partir du logo"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__display_name
#: model:ir.model.fields,field_description:web_company_color.field_res_company__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__id
#: model:ir.model.fields,field_description:web_company_color.field_res_company__id
msgid "ID"
msgstr "ID"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb____last_update
#: model:ir.model.fields,field_description:web_company_color.field_res_company____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text
msgid "Link Text Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text_hover
msgid "Link Text Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_bg
msgid "Navbar Background Color"
msgstr "Couleur de larrière-plan de la barre de navigation"
#. 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 "Couleur d'arrière-plan de la barre de navigation au survol"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_text
msgid "Navbar Text Color"
msgstr "Couleur du texte de la barre de navigation"
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_ir_qweb
msgid "Qweb"
msgstr "Qweb"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__scss_modif_timestamp
msgid "SCSS Modif. Timestamp"
msgstr ""
#~ msgid "Navbar Colors"
#~ msgstr "Couleurs de la barre de navigation"

View File

@ -0,0 +1,126 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_company_color
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2019-11-18 14:34+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\n"
"Language-Team: none\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 3.8\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"
" Kako bi promjene postale vidljive, molimo \n"
" učitajte ponovo ovu stranicu."
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg
msgid "Button Background Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg_hover
msgid "Button Background Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_text
msgid "Button Text Color"
msgstr ""
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Colors"
msgstr ""
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_res_company
msgid "Companies"
msgstr "Tvrtke"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__company_colors
msgid "Company Colors"
msgstr "Boje tvrtke"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Company Styles"
msgstr "Stilovi tvrtke"
#. 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
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__display_name
#: model:ir.model.fields,field_description:web_company_color.field_res_company__display_name
msgid "Display Name"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__id
#: model:ir.model.fields,field_description:web_company_color.field_res_company__id
msgid "ID"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb____last_update
#: model:ir.model.fields,field_description:web_company_color.field_res_company____last_update
msgid "Last Modified on"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text
msgid "Link Text Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text_hover
msgid "Link Text Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_bg
msgid "Navbar Background Color"
msgstr "Boja pozadine Navigacijske trake"
#. 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 "Poja pozadine navigacijske trake (hoover)"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_text
msgid "Navbar Text Color"
msgstr "Boja teksta navigacijske trake"
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_ir_qweb
msgid "Qweb"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__scss_modif_timestamp
msgid "SCSS Modif. Timestamp"
msgstr "SCSS Modif. Vremenski žig"
#~ msgid "Navbar Colors"
#~ msgstr "Boje navigacijske trake"

View File

@ -0,0 +1,126 @@
# 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"
"PO-Revision-Date: 2023-11-27 11:39+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\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"
" Perché i cambiamenti abbiano effetto, prego "
"aggiornare\n"
" la pagina."
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg
msgid "Button Background Color"
msgstr "Colore sfondo pulsante"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg_hover
msgid "Button Background Color Hover"
msgstr "Colore hover sfondo pulsante"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_text
msgid "Button Text Color"
msgstr "Colore testo pulsante"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Colors"
msgstr "Colori"
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_res_company
msgid "Companies"
msgstr "Aziende"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__company_colors
msgid "Company Colors"
msgstr "Colori Aziendali"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Company Styles"
msgstr "Stili Aziendali"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Compute colors from logo"
msgstr "Calcola colori dal logo"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__display_name
#: model:ir.model.fields,field_description:web_company_color.field_res_company__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__id
#: model:ir.model.fields,field_description:web_company_color.field_res_company__id
msgid "ID"
msgstr "ID"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb____last_update
#: model:ir.model.fields,field_description:web_company_color.field_res_company____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text
msgid "Link Text Color"
msgstr "Colore testo collegamento"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text_hover
msgid "Link Text Color Hover"
msgstr "Colore hover testo collegamento"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_bg
msgid "Navbar Background Color"
msgstr "Sfondo barra navigazione"
#. 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 "Colore hover sfondo barra navigazione"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_text
msgid "Navbar Text Color"
msgstr "Colore testo barra navigazione"
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_ir_qweb
msgid "Qweb"
msgstr "Qweb"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__scss_modif_timestamp
msgid "SCSS Modif. Timestamp"
msgstr "Timestamp modifica SCSS"
#~ msgid "Navbar Colors"
#~ msgstr "Colori Barra Navigazione"

View File

@ -0,0 +1,124 @@
# 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"
"PO-Revision-Date: 2020-11-11 13:08+0000\n"
"Last-Translator: Dennis Sluijk <d.sluijk@onestein.nl>\n"
"Language-Team: none\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.10\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"
" Ververs de pagina om de wijzigingen door te voeren."
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg
msgid "Button Background Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg_hover
msgid "Button Background Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_text
msgid "Button Text Color"
msgstr ""
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Colors"
msgstr ""
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_res_company
msgid "Companies"
msgstr "Bedrijven"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__company_colors
msgid "Company Colors"
msgstr "Bedrijfskleuren"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Company Styles"
msgstr "Bedrijfsstijlen"
#. 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
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__display_name
#: model:ir.model.fields,field_description:web_company_color.field_res_company__display_name
msgid "Display Name"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__id
#: model:ir.model.fields,field_description:web_company_color.field_res_company__id
msgid "ID"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb____last_update
#: model:ir.model.fields,field_description:web_company_color.field_res_company____last_update
msgid "Last Modified on"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text
msgid "Link Text Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text_hover
msgid "Link Text Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_bg
msgid "Navbar Background Color"
msgstr "Navigatiebalk Achtergrondkleur"
#. 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 "Navigatiebalk Achtergrondkleur (als je de muis er overheen beweegt)"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_text
msgid "Navbar Text Color"
msgstr "Navigatiebalk Tekstkleuren"
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_ir_qweb
msgid "Qweb"
msgstr "Qweb"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__scss_modif_timestamp
msgid "SCSS Modif. Timestamp"
msgstr ""
#~ msgid "Navbar Colors"
#~ msgstr "Navigatiebalk Kleuren"

View File

@ -0,0 +1,125 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_company_color
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2020-07-08 05:19+0000\n"
"Last-Translator: 黎伟杰 <674416404@qq.com>\n"
"Language-Team: none\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 3.10\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"
" 为了使更改生效,请刷新\n"
" 这个页面。"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg
msgid "Button Background Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_bg_hover
msgid "Button Background Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_button_text
msgid "Button Text Color"
msgstr ""
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Colors"
msgstr ""
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_res_company
msgid "Companies"
msgstr "公司"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__company_colors
msgid "Company Colors"
msgstr "公司颜色"
#. module: web_company_color
#: model_terms:ir.ui.view,arch_db:web_company_color.view_company_form
msgid "Company Styles"
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
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__display_name
#: model:ir.model.fields,field_description:web_company_color.field_res_company__display_name
msgid "Display Name"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb__id
#: model:ir.model.fields,field_description:web_company_color.field_res_company__id
msgid "ID"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_ir_qweb____last_update
#: model:ir.model.fields,field_description:web_company_color.field_res_company____last_update
msgid "Last Modified on"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text
msgid "Link Text Color"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_link_text_hover
msgid "Link Text Color Hover"
msgstr ""
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_bg
msgid "Navbar Background Color"
msgstr "导航栏背景颜色"
#. 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 "导航栏鼠标悬停背景颜色"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__color_navbar_text
msgid "Navbar Text Color"
msgstr "导航栏文字颜色"
#. module: web_company_color
#: model:ir.model,name:web_company_color.model_ir_qweb
msgid "Qweb"
msgstr "Qweb"
#. module: web_company_color
#: model:ir.model.fields,field_description:web_company_color.field_res_company__scss_modif_timestamp
msgid "SCSS Modif. Timestamp"
msgstr "SCSS修改时间戳"
#~ msgid "Navbar Colors"
#~ msgstr "导航栏颜色"

View File

@ -0,0 +1,5 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import assetsbundle
from . import res_company
from . import ir_qweb

View File

@ -0,0 +1,23 @@
# Copyright 2020 Alexandre Díaz <dev@redneboa.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.addons.base.models.assetsbundle import AssetsBundle, ScssStylesheetAsset
from odoo.http import request
from odoo.addons.base.models.assetsbundle import AssetsBundle
class AssetsBundleCompanyColor(AssetsBundle):
def get_company_color_asset_node(self):
"""Process the user active company scss and returns the node to inject"""
try:
active_company_id = int(
request.httprequest.cookies.get("cids", "").split("-")[0]
)
except Exception:
active_company_id = False
company_id = (
self.env["res.company"].browse(active_company_id) or self.env.company
)
return company_id.scss_get_url()

View File

@ -0,0 +1,95 @@
# Copyright 2020 Alexandre Díaz <dev@redneboa.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
from .assetsbundle import AssetsBundleCompanyColor
# Monkey Patch to change the ormcache_context decorator of '_get_asset_nodes' to
# add 'active_company_id' context key. This is done to avoid "clear_caches" usage
# that works in a more aggressive way to the LRU cache.
class QWeb(models.AbstractModel):
_inherit = "ir.qweb"
def _generate_asset_links_cache(
self,
bundle,
css=True,
js=True,
assets_params=None,
rtl=False,
):
res = super()._generate_asset_links_cache(
bundle,
css=css,
js=js,
assets_params=assets_params,
rtl=rtl,
)
if bundle == "web_company_color.company_color_assets":
asset = AssetsBundleCompanyColor(
bundle, [], env=self.env, css=True, js=True
)
res += [asset.get_company_color_asset_node()]
return res
def _generate_asset_links(
self,
bundle,
css=True,
js=True,
debug_assets=False,
assets_params=None,
rtl=False,
):
res = super()._generate_asset_links(
bundle,
css=css,
js=js,
debug_assets=debug_assets,
assets_params=assets_params,
rtl=rtl,
)
if bundle == "web_company_color.company_color_assets":
asset = AssetsBundleCompanyColor(
bundle, [], env=self.env, css=True, js=True
)
res += [asset.get_company_color_asset_node()]
return res
def _get_asset_content(self, bundle, assets_params=None):
"""Handle 'special' web_company_color bundle"""
if bundle == "web_company_color.company_color_assets":
return [], []
return super()._get_asset_content(bundle, assets_params=assets_params)
def _get_asset_nodes(
self,
bundle,
css=True,
js=True,
debug=False,
defer_load=False,
lazy_load=False,
media=None,
):
res = super()._get_asset_nodes(
bundle,
css=css,
js=js,
debug=debug,
defer_load=defer_load,
lazy_load=lazy_load,
media=media,
)
for tag, attributes in res:
if tag == "link" and attributes.get("href", "").startswith(
"/web_company_color/static/src/scss/custom_colors."
):
attributes.pop("type", None)
return res

View File

@ -0,0 +1,256 @@
# Copyright 2019 Alexandre Díaz <dev@redneboa.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import base64
from colorsys import hls_to_rgb, rgb_to_hls
from odoo import api, fields, models
from ..utils import convert_to_image, image_to_rgb, n_rgb_to_hex
URL_BASE = "/web_company_color/static/src/scss/"
URL_SCSS_GEN_TEMPLATE = URL_BASE + "custom_colors.%d.gen.scss"
class ResCompany(models.Model):
_inherit = "res.company"
SCSS_TEMPLATE = """
.o_main_navbar {
background: %(color_navbar_bg)s !important;
background-color: %(color_navbar_bg)s !important;
color: %(color_navbar_text)s !important;
.show {
.dropdown-toggle {
background-color: %(color_navbar_bg_hover)s !important;
}
}
> ul {
> li {
> a, > label {
color: %(color_navbar_text)s !important;
&:hover, &:focus, &:active, &:focus:active {
background-color: %(color_navbar_bg_hover)s !important;
}
}
}
}
}
.o_menu_brand {
color: %(color_navbar_text)s !important;
&:hover, &:focus, &:active, &:focus:active {
background-color: %(color_navbar_bg_hover)s !important;
}
}
a[href],
a[tabindex],
.btn-link,
.o_external_button {
color: %(color_link_text)s;
.o_main_navbar {
color: none;
}
}
a:hover,
.btn-link:hover {
color: %(color_link_text_hover)s;
.o_main_navbar {
color: none;
}
}
.btn-primary:not(.disabled),
.ui-autocomplete .ui-menu-item > a.ui-state-active {
color: %(color_button_text)s !important;
background-color: %(color_button_bg)s !important;
border-color: %(color_button_bg)s !important;
}
.btn-primary:hover:not(.disabled),
.ui-autocomplete .ui-menu-item > a.ui-state-active:hover {
color: %(color_button_text)s !important;
background-color: %(color_button_bg_hover)s !important;
border-color: %(color_button_bg_hover)s !important;
}
.o_searchview .o_searchview_facet .o_searchview_facet_label {
color: %(color_button_text)s !important;
background-color: %(color_button_bg)s !important;
}
.o_form_view .o_horizontal_separator {
color: %(color_link_text)s !important;
}
.o_form_view .oe_button_box .oe_stat_button .o_button_icon,
.o_form_view .oe_button_box .oe_stat_button .o_stat_info .o_stat_value,
.o_form_view .oe_button_box .oe_stat_button > span .o_stat_value {
color: %(color_link_text)s !important;
}
.o_form_view .o_form_statusbar > .o_statusbar_status >
.o_arrow_button.btn-primary.disabled {
color: %(color_link_text)s !important;
}
.o_required_modifier{
:focus-within {
--o-input-border-color: %(color_button_bg)s !important;
--o-caret-color: %(color_button_bg)s !important;
}
input:hover, .o_field_many2one_selection:hover {
--o-input-border-color: %(color_button_bg)s !important;
--o-caret-color: %(color_button_bg)s !important;
}
}
.o_menu_sections .o_nav_entry {
background: %(color_navbar_bg)s !important;
background-color: %(color_navbar_bg)s !important;
color: %(color_navbar_text)s !important;
&:hover, &:focus, &:active, &:focus:active {
background-color: %(color_navbar_bg_hover)s !important;
}
}
.o_menu_sections .dropdown-toggle {
background: %(color_navbar_bg)s !important;
background-color: %(color_navbar_bg)s !important;
color: %(color_navbar_text)s !important;
&:hover, &:focus, &:active, &:focus:active {
background-color: %(color_navbar_bg_hover)s !important;
}
}
.o_menu_systray button{
color: %(color_navbar_text)s !important;
&:hover, &:focus, &:active, &:focus:active {
background-color: %(color_navbar_bg_hover)s !important;
}
}
.dropdown-item{
color: %(color_submenu_text)s !important;
}
"""
company_colors = fields.Serialized()
color_navbar_bg = fields.Char("Navbar Background Color", sparse="company_colors")
color_navbar_bg_hover = fields.Char(
"Navbar Background Color Hover", sparse="company_colors"
)
color_navbar_text = fields.Char("Navbar Text Color", sparse="company_colors")
color_button_text = fields.Char("Button Text Color", sparse="company_colors")
color_button_bg = fields.Char("Button Background Color", sparse="company_colors")
color_button_bg_hover = fields.Char(
"Button Background Color Hover", sparse="company_colors"
)
color_link_text = fields.Char("Link Text Color", sparse="company_colors")
color_link_text_hover = fields.Char(
"Link Text Color Hover", sparse="company_colors"
)
scss_modif_timestamp = fields.Char("SCSS Modif. Timestamp")
@api.model_create_multi
def create(self, vals_list):
records = super().create(vals_list)
records.scss_create_or_update_attachment()
return records
def unlink(self):
IrAttachmentObj = self.env["ir.attachment"]
for record in self:
IrAttachmentObj.sudo().search(
[("url", "=", record.scss_get_url()), ("company_id", "=", record.id)]
).sudo().unlink()
return super().unlink()
def write(self, values):
if not self.env.context.get("ignore_company_color", False):
fields_to_check = (
"color_navbar_bg",
"color_navbar_bg_hover",
"color_navbar_text",
"color_button_bg",
"color_button_bg_hover",
"color_button_text",
"color_link_text",
"color_link_text_hover",
)
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 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
_h, _l, _s = rgb_to_hls(_r, _g, _b)
_l = max(0, _l - 0.1)
_rd, _gd, _bd = hls_to_rgb(_h, _l, _s)
# Calc. optimal text color (b/w)
# Grayscale human vision perception (Rec. 709 values)
_a = 1 - (0.2126 * _r + 0.7152 * _g + 0.0722 * _b)
values.update(
{
"color_navbar_bg": n_rgb_to_hex(_r, _g, _b),
"color_navbar_bg_hover": n_rgb_to_hex(_rd, _gd, _bd),
"color_navbar_text": "#000" if _a < 0.5 else "#fff",
}
)
self.write(values)
def _scss_get_sanitized_values(self):
self.ensure_one()
# Clone company_color as dictionary to avoid ORM operations
# This allow extend company_colors and only sanitize selected fields
# or add custom values
values = dict(self.company_colors or {})
values.update(
{
"color_navbar_bg": (values.get("color_navbar_bg") or "$o-brand-odoo"),
"color_navbar_bg_hover": (values.get("color_navbar_bg_hover")),
"color_navbar_text": (values.get("color_navbar_text") or "#FFF"),
"color_button_bg": values.get("color_button_bg") or "#71639e",
"color_button_bg_hover": values.get("color_button_bg_hover")
or "darken(#71639e, 10%)",
"color_button_text": values.get("color_button_text") or "#FFF",
"color_link_text": values.get("color_link_text") or "#71639e",
"color_link_text_hover": values.get("color_link_text_hover")
or "darken(#71639e, 10%)",
"color_submenu_text": values.get("color_link_text") or "#374151",
}
)
return values
def _scss_generate_content(self):
self.ensure_one()
# ir.attachment need files with content to work
if not self.company_colors:
return "// No Web Company Color SCSS Content\n"
return self.SCSS_TEMPLATE % self._scss_get_sanitized_values()
def scss_get_url(self):
self.ensure_one()
return URL_SCSS_GEN_TEMPLATE % self.id
def scss_create_or_update_attachment(self):
IrAttachmentObj = self.env["ir.attachment"]
for record in self:
datas = base64.b64encode(record._scss_generate_content().encode("utf-8"))
custom_url = record.scss_get_url()
custom_attachment = IrAttachmentObj.sudo().search(
[("url", "=", custom_url), ("company_id", "=", record.id)]
)
values = {
"datas": datas,
"url": custom_url,
"name": custom_url,
"company_id": record.id,
"type": "binary",
"mimetype": "text/css",
}
if custom_attachment:
custom_attachment.sudo().write(values)
else:
IrAttachmentObj.sudo().create(values)
self.env.registry.clear_cache()

View File

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

View File

@ -0,0 +1 @@
This module change navbar colors based in the company logo colors.

View File

@ -0,0 +1 @@
White color is omitted in the addition operation to support images without alpha channel.

View File

@ -0,0 +1,3 @@
Go to company record and set a logo. Can see/modify applied colors on the "Navbar" section.
For optimal results use images with alpha channel.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -0,0 +1,453 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="web-company-color">
<h1>Web Company Color</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:622d249810675797d351ceaaa800f9df89d92067ce131c14087b0b92fbf78283
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/web/tree/18.0/web_company_color"><img alt="OCA/web" src="https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/web-18-0/web-18-0-web_company_color"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/web&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module change navbar colors based in the company logo colors.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-2">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h2><a class="toc-backref" href="#toc-entry-1">Usage</a></h2>
<p>Go to company record and set a logo. Can see/modify applied colors on
the “Navbar” section.</p>
<p>For optimal results use images with alpha channel.</p>
</div>
<div class="section" id="known-issues-roadmap">
<h2><a class="toc-backref" href="#toc-entry-2">Known issues / Roadmap</a></h2>
<p>White color is omitted in the addition operation to support images
without alpha channel.</p>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/web/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/web/issues/new?body=module:%20web_company_color%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h2><a class="toc-backref" href="#toc-entry-4">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-5">Authors</a></h3>
<ul class="simple">
<li>Alexandre Díaz</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-6">Contributors</a></h3>
<ul class="simple">
<li>Jordi Ballester Alomar &lt;<a class="reference external" href="mailto:jordi.ballester&#64;forgeflow.com">jordi.ballester&#64;forgeflow.com</a>&gt; (ForgeFlow)</li>
<li>Lois Rilo &lt;<a class="reference external" href="mailto:lois.rilo&#64;forgeflow.com">lois.rilo&#64;forgeflow.com</a>&gt; (ForgeFlow)</li>
<li>Simone Orsi &lt;<a class="reference external" href="mailto:simone.orsi&#64;camptocamp.com">simone.orsi&#64;camptocamp.com</a>&gt;</li>
<li>Iván Antón &lt;<a class="reference external" href="mailto:ozono&#64;ozonomultimedia.com">ozono&#64;ozonomultimedia.com</a>&gt;</li>
<li>Bernat Puig &lt;<a class="reference external" href="mailto:bernat.puig&#64;forgeflow.com">bernat.puig&#64;forgeflow.com</a>&gt; (ForgeFlow)</li>
<li>Dhara Solanki &lt;<a class="reference external" href="mailto:dhara.solanki&#64;initos.com">dhara.solanki&#64;initos.com</a>&gt;</li>
<li><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:<ul>
<li>Jairo Llopis</li>
<li>Alexandre Díaz</li>
<li>Carlos Roca</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h3>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/web/tree/18.0/web_company_color">OCA/web</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1 @@
from . import test_res_company

View File

@ -0,0 +1,77 @@
# Copyright 2019 Alexandre Díaz <dev@redneboa.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests import common
from ..models.res_company import URL_BASE
class TestResCompany(common.TransactionCase):
IMG_GREEN = (
"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUl"
+ "EQVR42mNk+M/wHwAEBgIApD5fRAAAAABJRU5ErkJggg=="
)
def _test_scss_attachment(self):
num_scss = self.env["ir.attachment"].search_count(
[("url", "ilike", "%s%%" % URL_BASE)]
)
num_companies = self.env["res.company"].search_count([])
self.assertEqual(num_scss, num_companies, "Invalid scss attachments")
def test_create_unlink_company(self):
company_id = self.env["res.company"].create({"name": "Company Test"})
self.assertEqual(
company_id.color_navbar_bg, False, "Invalid Navbar Background Color"
)
self._test_scss_attachment()
company_id.sudo().write({"logo": self.IMG_GREEN})
company_id.button_compute_color()
self.assertEqual(
company_id.color_navbar_bg, "#00ff00", "Invalid Navbar Background Color"
)
# TODO: We can't remove companies if they have attached data, like
# warehouse when we have stock module installed
# company_id.sudo().unlink()
# self._test_scss_attachment()
def test_change_logo(self):
company_id = self.env["res.company"].search([], limit=1)
company_id.sudo().write({"logo": self.IMG_GREEN})
company_id.button_compute_color()
self.assertEqual(
company_id.color_navbar_bg, "#00ff00", "Invalid Navbar Background Color"
)
def test_scss_sanitized_values(self):
company_id = self.env["res.company"].search([], limit=1)
company_id.sudo().write({"color_navbar_bg": False})
values = company_id.sudo()._scss_get_sanitized_values()
self.assertEqual(
values["color_navbar_bg"],
"$o-brand-odoo",
"Invalid Navbar Background Color",
)
company_id.sudo().write({"color_navbar_bg": "#DEAD00"})
values = company_id.sudo()._scss_get_sanitized_values()
self.assertEqual(
values["color_navbar_bg"], "#DEAD00", "Invalid Navbar Background Color"
)
def test_change_color(self):
company_id = self.env["res.company"].search([], limit=1)
company_id.sudo().write({"color_navbar_bg": "#DEAD00"})
self.assertEqual(
company_id.color_navbar_bg, "#DEAD00", "Invalid Navbar Background Color"
)
self.assertEqual(
company_id.company_colors["color_navbar_bg"],
"#DEAD00",
"Invalid Navbar Background Color",
)
company_id.sudo().write({"color_navbar_bg": False})
self.assertFalse(company_id.color_navbar_bg, "Invalid Navbar Background Color")
self.assertNotIn(
"color_navbar_bg",
company_id.company_colors,
"Invalid Navbar Background Color",
)

View File

@ -0,0 +1,41 @@
# Copyright 2019 Alexandre Díaz <dev@redneboa.es>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import base64
import math
from io import BytesIO
from PIL import Image
# def n_rgb_to_hex(_r, _g, _b):
# return "#{:02x}{:02x}{:02x}".format(int(255 * _r), int(255 * _g), int(255 * _b))
def n_rgb_to_hex(_r, _g, _b):
return f"#{int(255 * _r):02x}{int(255 * _g):02x}{int(255 * _b):02x}"
def convert_to_image(field_binary):
return Image.open(BytesIO(base64.b64decode(field_binary)))
def image_to_rgb(img):
def normalize_vec3(vec3):
_l = 1.0 / math.sqrt(vec3[0] * vec3[0] + vec3[1] * vec3[1] + vec3[2] * vec3[2])
return (vec3[0] * _l, vec3[1] * _l, vec3[2] * _l)
# Force Alpha Channel
if img.mode != "RGBA":
img = img.convert("RGBA")
width, height = img.size
# Reduce pixels
width, height = (max(1, int(width / 4)), max(1, int(height / 4)))
img = img.resize((width, height))
rgb_sum = [0, 0, 0]
# Mix. image colors using addition method
RGBA_WHITE = (255, 255, 255, 255)
for i in range(0, height * width):
rgba = img.getpixel((i % width, i / width))
if rgba[3] > 128 and rgba != RGBA_WHITE:
rgb_sum[0] += rgba[0]
rgb_sum[1] += rgba[1]
rgb_sum[2] += rgba[2]
_r, _g, _b = normalize_vec3(rgb_sum)
return (_r, _g, _b)

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2019 Alexandre Díaz
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo>
<!-- Workarround to use custom assets bundle
This specific 't-call-assets' xmlid will be handled in a 'special' way
-->
<template
id="webclient_bootstrap"
name="web_company_color assets"
inherit_id="web.webclient_bootstrap"
>
<xpath expr="//t[@t-set='head_web']" >
<t t-call-assets="web_company_color.company_color_assets"
/>
</xpath>
</template>
</odoo>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" ?>
<!--
Copyright 2019
@author Alexandre Díaz <dev@redneboa.es>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo>
<record id="view_company_form" model="ir.ui.view">
<field name="model">res.company</field>
<field name="inherit_id" ref="base.view_company_form" />
<field name="arch" type="xml">
<notebook position="inside">
<page
string="Company Styles"
name="company_styles"
groups="base.group_system"
>
<group string="Colors" name="navbar_colors">
<field name="color_navbar_bg" widget="color" />
<field name="color_navbar_bg_hover" widget="color" />
<field name="color_navbar_text" widget="color" />
<field name="color_button_bg" widget="color" />
<field name="color_button_bg_hover" widget="color" />
<field name="color_button_text" widget="color" />
<field name="color_link_text" widget="color" />
<field name="color_link_text_hover" widget="color" />
</group>
<button
class="btn-primary"
name="button_compute_color"
type="object"
string="Compute colors from logo"
/>
<div class="alert alert-info info_icon" role="alert">
<span class="fa fa-info fa-2x" />
In order for the changes to take effect, please refresh
the page.
</div>
</page>
</notebook>
</field>
</record>
</odoo>