From ad9c911d0e896b48ddb2949bc3606de1b0c4f6ae Mon Sep 17 00:00:00 2001 From: "alessandro.ceglie" Date: Thu, 12 Jan 2023 10:59:25 +0100 Subject: [PATCH] Fix #396. Custom action scripts gets server side flagged fields in the `fields` dict parameter under the `name_of_the_field` key. --- src/collective/easyform/actions.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/collective/easyform/actions.py b/src/collective/easyform/actions.py index 25b9cbeb..2d120a01 100644 --- a/src/collective/easyform/actions.py +++ b/src/collective/easyform/actions.py @@ -584,7 +584,7 @@ def getScript(self, context): script.ZPythonScript_edit(params, body) return script - def sanifyFields(self, form): + def sanifyFields(self, form, fields): # Makes request.form fields accessible in a script # # Avoid Unauthorized exceptions since request.form is inaccesible @@ -592,6 +592,12 @@ def sanifyFields(self, form): result = {} for field in form: result[field] = form[field] + + # append in the results all serverside fields variable + for field in fields: + key = 'form.widgets.{}'.format(field) + if key not in result: + result[field] = fields[field] return result def checkWarningsAndErrors(self, script): @@ -638,7 +644,7 @@ def executeCustomScript(self, result, form, req): def onSuccess(self, fields, request): # Executes the custom script form = get_context(self) - resultData = self.sanifyFields(request.form) + resultData = self.sanifyFields(request.form, fields) return self.executeCustomScript(resultData, form, request)