From d89359c383354aaf1192e5e4cc3bd13abfa2cd2d Mon Sep 17 00:00:00 2001 From: "Ahmed Khalaf (ahkh)" Date: Tue, 4 Oct 2022 14:50:19 +0000 Subject: [PATCH] [FIX] web: parent access in button context broken Before this commit, accessing parent in a button context broke the button throwing `EvaluationError: Name 'parent' is not defined`. to fix,the proxy object `params.evalContext` was passed to `evaluateExpr` similar to examples seen in `list_renderer.js` closes odoo/odoo#102293 X-original-commit: 90afb529969ce7de83a20060f5c35a64ce4cf971 Signed-off-by: Aaron Bohy (aab) Signed-off-by: Ahmed Khalaf --- .../src/views/view_button/view_button_hook.js | 3 +-- .../views/fields/one2many_field_tests.js | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/views/view_button/view_button_hook.js b/addons/web/static/src/views/view_button/view_button_hook.js index a9f116a84f5..8281180c562 100644 --- a/addons/web/static/src/views/view_button/view_button_hook.js +++ b/addons/web/static/src/views/view_button/view_button_hook.js @@ -71,8 +71,7 @@ export function useViewButtons(model, ref, options = {}) { let buttonContext = {}; if (clickParams.context) { if (typeof clickParams.context === "string") { - const valuesForEval = Object.assign({}, params.evalContext); - buttonContext = evaluateExpr(clickParams.context, valuesForEval); + buttonContext = evaluateExpr(clickParams.context, params.evalContext); } else { buttonContext = clickParams.context; } diff --git a/addons/web/static/tests/views/fields/one2many_field_tests.js b/addons/web/static/tests/views/fields/one2many_field_tests.js index 68dc86c7dd6..981c8b1ae50 100644 --- a/addons/web/static/tests/views/fields/one2many_field_tests.js +++ b/addons/web/static/tests/views/fields/one2many_field_tests.js @@ -9018,6 +9018,33 @@ QUnit.module("Fields", (hooks) => { assert.verifySteps(["do_something"]); }); + QUnit.test("o2m button with parent in context", async function (assert) { + await makeView({ + type: "form", + resModel: "partner", + serverData, + resId: 1, + arch: ` +
+ + + +