Skip to content

Commit 73c8be5

Browse files
haklyrayclaude
andcommitted
fix: CodeEditor mode crash and hidden menu reset on upgrade
1. spp_approval: change ace widget mode from 'text' to 'python' in CEL expression fields. Odoo 19 CodeEditor only accepts javascript/xml/qweb/scss/python — 'text' crashes with "Invalid props for component 'CodeEditor': 'mode' is not valid". 2. spp_hide_menus_base: re-apply hiding when module upgrade resets menu group_ids via XML (noupdate="0"). Previously, menus with state="hide" were skipped in hide_menus(), so an upgrade that re-applied the original group_ids left them visible. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent b061135 commit 73c8be5

3 files changed

Lines changed: 17 additions & 2 deletions

File tree

spp_approval/views/approval_definition_views_cel.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<field
1616
name="cel_condition"
1717
widget="ace"
18-
options="{'mode': 'text'}"
18+
options="{'mode': 'python'}"
1919
invisible="not use_cel_condition"
2020
placeholder="record.amount > 10000"
2121
/>
@@ -42,7 +42,7 @@
4242
<field
4343
name="cel_reviewer_expression"
4444
widget="ace"
45-
options="{'mode': 'text'}"
45+
options="{'mode': 'python'}"
4646
invisible="not use_cel_reviewer"
4747
placeholder="record.manager_id.user_id.id"
4848
/>

spp_hide_menus_base/models/hide_menu.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,17 @@ def hide_menu(self, menu_id=None):
4040
)
4141
rec.state = "hide"
4242

43+
def _reapply_hide(self):
44+
"""Re-apply hiding when module upgrade reset group_ids via XML."""
45+
try:
46+
hide_group = self.env.ref("spp_hide_menus_base.group_hide_menus_user")
47+
except ValueError:
48+
hide_group = self.env.ref("spp_hide_menus_base.group_menu_visibility")
49+
for rec in self:
50+
if rec.menu_id and hide_group not in rec.menu_id.group_ids:
51+
rec.default_group_ids = rec.menu_id.group_ids
52+
rec.menu_id.write({"group_ids": [Command.set([hide_group.id])]})
53+
4354
def show_menu(self):
4455
for rec in self:
4556
if rec.state == "hide" and rec.menu_id:

spp_hide_menus_base/models/ir_module_module.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ def hide_menus(self):
7979
hidden_menu.hide_menu()
8080
elif hidden_menus.state == "show":
8181
hidden_menus.hide_menu()
82+
elif hidden_menus.state == "hide":
83+
# Module upgrade may have reset group_ids via XML
84+
# (noupdate="0"). Re-apply hiding if stale.
85+
hidden_menus._reapply_hide()
8286

8387
def next(self):
8488
# Call your menu hiding logic first

0 commit comments

Comments
 (0)