Apply corporate website branding on upgrade
This commit is contained in:
parent
d1b464f4bb
commit
c2b5717f36
@ -1,3 +1,3 @@
|
||||
from . import controllers
|
||||
from . import hooks
|
||||
from . import models
|
||||
from . import hooks
|
||||
|
||||
@ -3,4 +3,5 @@
|
||||
<field name="name">Metatroncube Workplace</field>
|
||||
<field name="logo" type="base64" file="mcs_corporate_website/static/src/img/metatroncube-logo.png"/>
|
||||
</record>
|
||||
<function model="mcs.corporate.website.setup" name="apply_corporate_branding"/>
|
||||
</odoo>
|
||||
|
||||
@ -1,6 +1,3 @@
|
||||
import base64
|
||||
from pathlib import Path
|
||||
|
||||
from odoo import api, SUPERUSER_ID
|
||||
|
||||
|
||||
@ -17,22 +14,4 @@ class CorporateWebsiteSetup:
|
||||
self.env = env
|
||||
|
||||
def run(self):
|
||||
self._brand_website()
|
||||
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})
|
||||
self.env["mcs.corporate.website.setup"].apply_corporate_branding()
|
||||
|
||||
@ -1 +1,2 @@
|
||||
from . import support_ticket
|
||||
from . import website_setup
|
||||
|
||||
49
addons/mcs_corporate_website/models/website_setup.py
Normal file
49
addons/mcs_corporate_website/models/website_setup.py
Normal 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
|
||||
Loading…
x
Reference in New Issue
Block a user