Apply corporate website branding on upgrade
This commit is contained in:
parent
d1b464f4bb
commit
c2b5717f36
@ -1,3 +1,3 @@
|
|||||||
from . import controllers
|
from . import controllers
|
||||||
from . import hooks
|
|
||||||
from . import models
|
from . import models
|
||||||
|
from . import hooks
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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})
|
|
||||||
|
|||||||
@ -1 +1,2 @@
|
|||||||
from . import support_ticket
|
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