Apply corporate website branding on upgrade

This commit is contained in:
metatroncubeswdev 2026-08-31 15:04:53 -04:00
parent d1b464f4bb
commit c2b5717f36
5 changed files with 53 additions and 23 deletions

View File

@ -1,3 +1,3 @@
from . import controllers from . import controllers
from . import hooks
from . import models from . import models
from . import hooks

View File

@ -3,4 +3,5 @@
<field name="name">Metatroncube Workplace</field> <field name="name">Metatroncube Workplace</field>
<field name="logo" type="base64" file="mcs_corporate_website/static/src/img/metatroncube-logo.png"/> <field name="logo" type="base64" file="mcs_corporate_website/static/src/img/metatroncube-logo.png"/>
</record> </record>
<function model="mcs.corporate.website.setup" name="apply_corporate_branding"/>
</odoo> </odoo>

View File

@ -1,6 +1,3 @@
import base64
from pathlib import Path
from odoo import api, SUPERUSER_ID from odoo import api, SUPERUSER_ID
@ -17,22 +14,4 @@ class CorporateWebsiteSetup:
self.env = env self.env = env
def run(self): def run(self):
self._brand_website() self.env["mcs.corporate.website.setup"].apply_corporate_branding()
self._hide_duplicate_home_menu()
def _brand_website(self):
website = self.env["website"].sudo().search([], limit=1)
if not website:
return
logo_path = Path(__file__).parent / "static" / "src" / "img" / "metatroncube-logo.png"
values = {
"name": "Metatroncube Workplace",
}
if logo_path.exists():
values["logo"] = base64.b64encode(logo_path.read_bytes())
website.write(values)
def _hide_duplicate_home_menu(self):
menu = self.env.ref("mcs_corporate_website.menu_home", raise_if_not_found=False)
if menu:
menu.sudo().write({"is_visible": False})

View File

@ -1 +1,2 @@
from . import support_ticket from . import support_ticket
from . import website_setup

View File

@ -0,0 +1,49 @@
import base64
from odoo import models
from odoo.modules.module import get_module_resource
class McsCorporateWebsiteSetup(models.AbstractModel):
_name = "mcs.corporate.website.setup"
_description = "Metatroncube Corporate Website Setup"
def apply_corporate_branding(self):
self._brand_website()
self._hide_duplicate_home_menus()
return True
def _brand_website(self):
website = self.env["website"].sudo().search([], limit=1)
if not website:
return
values = {"name": "Metatroncube Workplace"}
logo_path = get_module_resource(
"mcs_corporate_website",
"static",
"src",
"img",
"metatroncube-logo.png",
)
if logo_path:
with open(logo_path, "rb") as logo_file:
values["logo"] = base64.b64encode(logo_file.read())
website.write(values)
def _hide_duplicate_home_menus(self):
Menu = self.env["website.menu"].sudo()
home_menus = Menu.search(
[("name", "=", "Home"), ("url", "=", "/")],
order="parent_id, sequence, id",
)
by_parent = {}
for menu in home_menus:
by_parent.setdefault(menu.parent_id.id or 0, self.env["website.menu"])
by_parent[menu.parent_id.id or 0] |= menu
for menus in by_parent.values():
visible_menus = menus.filtered("is_visible").sorted(lambda item: (item.sequence, item.id))
for duplicate in visible_menus[1:]:
duplicate.is_visible = False
own_home = self.env.ref("mcs_corporate_website.menu_home", raise_if_not_found=False)
if own_home:
own_home.is_visible = False