fix: explicit context propagation to wizards from mrp production actions

This commit is contained in:
Suherdy Yacob 2026-02-16 17:11:53 +07:00
parent a338b24da3
commit f31a64e0d3

View File

@ -11,10 +11,25 @@ class MrpProduction(models.Model):
record.hide_quality_check_button = not self.env.user.allowed_quality_checks record.hide_quality_check_button = not self.env.user.allowed_quality_checks
def action_confirm(self): def action_confirm(self):
return super(MrpProduction, self.with_context(bypass_user_restriction=True)).action_confirm() res = super(MrpProduction, self.with_context(bypass_user_restriction=True)).action_confirm()
if isinstance(res, dict) and res.get('type') == 'ir.actions.act_window':
context = res.get('context') or {}
if isinstance(context, str):
# If context is a string (rare but possible in old Odoo, less likely in 19), handle or ignore.
# In Odoo 19 it's likely a dict or python string representation.
# Safer to just assume dict for now given standard patterns or let it be if complex.
pass
else:
res['context'] = {**context, 'bypass_user_restriction': True}
return res
def button_mark_done(self): def button_mark_done(self):
return super(MrpProduction, self.with_context(bypass_user_restriction=True)).button_mark_done() res = super(MrpProduction, self.with_context(bypass_user_restriction=True)).button_mark_done()
if isinstance(res, dict) and res.get('type') == 'ir.actions.act_window':
context = res.get('context') or {}
if not isinstance(context, str):
res['context'] = {**context, 'bypass_user_restriction': True}
return res
@api.model_create_multi @api.model_create_multi
def create(self, vals_list): def create(self, vals_list):