Skip to content

Commit b51044e

Browse files
committed
🐛 [#3730] Forgot to update variable mappings everywhere
1 parent 8a84d35 commit b51044e

File tree

6 files changed

+65
-55
lines changed

6 files changed

+65
-55
lines changed

src/openforms/forms/api/parsers.py

-10
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,6 @@ class IgnoreConfigurationFieldCamelCaseJSONRenderer(CamelCaseJSONRenderer):
4545
json_underscoreize = {"ignore_fields": ("configuration", "component_translations")}
4646

4747

48-
class FormLogicRuleJSONParser(CamelCaseJSONParser):
49-
# In the config field of the DMN Evaluate logic action, the mapping of the form variables to the DMN variables should
50-
# not be changed by the parser
51-
json_underscoreize = {"ignore_fields": ("input_mapping", "output_mapping")}
52-
53-
54-
class FormLogicRuleJSONRenderer(CamelCaseJSONRenderer):
55-
json_underscoreize = {"ignore_fields": ("input_mapping", "output_mapping")}
56-
57-
5848
class FormCamelCaseJSONParser(FormCamelCaseMixin, CamelCaseJSONParser):
5949
"""
6050
Parser for Form resource.

src/openforms/forms/api/viewsets.py

-4
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@
3434
from .filters import FormDefinitionFilter, FormVariableFilter
3535
from .parsers import (
3636
FormCamelCaseJSONParser,
37-
FormLogicRuleJSONParser,
38-
FormLogicRuleJSONRenderer,
3937
FormVariableJSONParser,
4038
FormVariableJSONRenderer,
4139
IgnoreConfigurationFieldCamelCaseJSONParser,
@@ -601,8 +599,6 @@ def variables_list(self, request, *args, **kwargs):
601599
methods=["put"],
602600
url_path="logic-rules",
603601
url_name="logic-rules",
604-
parser_classes=[FormLogicRuleJSONParser],
605-
renderer_classes=[FormLogicRuleJSONRenderer],
606602
)
607603
@transaction.atomic
608604
def logic_rules_bulk_update(self, request, *args, **kwargs):

src/openforms/js/components/admin/form_design/logic/actions/dmn/DMNActionConfig.stories.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ export const withInitialValues = {
142142
decisionDefinitionId: 'approve-payment',
143143
decisionDefinitionVersion: '1',
144144
inputMapping: [
145-
{formVar: 'name', dmnVar: 'dmnName'},
146-
{formVar: 'surname', dmnVar: 'dmnSurname'},
145+
{formVariable: 'name', dmnVariable: 'dmnName'},
146+
{formVariable: 'surname', dmnVariable: 'dmnSurname'},
147147
],
148-
outputMapping: [{formVar: 'canApply', dmnVar: 'dmnCanApply'}],
148+
outputMapping: [{formVariable: 'canApply', dmnVariable: 'dmnCanApply'}],
149149
},
150150
},
151151
play: async ({canvasElement}) => {

src/openforms/js/components/admin/form_design/logic/actions/dmn/VariableMapping.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,25 @@ const VariableMapping = ({mappingName, values, formVariables}) => {
4949
<tr key={index}>
5050
<td>
5151
<Field
52-
name={`${mappingName}.${index}.formVar`}
53-
htmlFor={`${mappingName}.${index}.formVar`}
52+
name={`${mappingName}.${index}.formVariable`}
53+
htmlFor={`${mappingName}.${index}.formVariable`}
5454
>
5555
<Select
56-
id={`${mappingName}.${index}.formVar`}
56+
id={`${mappingName}.${index}.formVariable`}
5757
allowBlank={true}
5858
choices={formVariables.map(variable => [variable.key, variable.name])}
59-
{...getFieldProps(`${mappingName}.${index}.formVar`)}
59+
{...getFieldProps(`${mappingName}.${index}.formVariable`)}
6060
/>
6161
</Field>
6262
</td>
6363
<td>
6464
<Field
65-
htmlFor={`${mappingName}.${index}.dmnVar`}
66-
name={`${mappingName}.${index}.dmnVar`}
65+
htmlFor={`${mappingName}.${index}.dmnVariable`}
66+
name={`${mappingName}.${index}.dmnVariable`}
6767
>
6868
<TextInput
69-
id={`${mappingName}.${index}.dmnVar`}
70-
{...getFieldProps(`${mappingName}.${index}.dmnVar`)}
69+
id={`${mappingName}.${index}.dmnVariable`}
70+
{...getFieldProps(`${mappingName}.${index}.dmnVariable`)}
7171
/>
7272
</Field>
7373
</td>
@@ -83,7 +83,7 @@ const VariableMapping = ({mappingName, values, formVariables}) => {
8383
</table>
8484
<ButtonContainer
8585
onClick={() =>
86-
arrayHelpers.insert(values[mappingName].length, {formVar: '', dmnVar: ''})
86+
arrayHelpers.insert(values[mappingName].length, {formVariable: '', dmnVariable: ''})
8787
}
8888
>
8989
<FormattedMessage description="Add variable button" defaultMessage="Add variable" />

src/openforms/submissions/logic/actions.py

+14-8
Original file line numberDiff line numberDiff line change
@@ -206,18 +206,23 @@ def eval(
206206
return {var.key: result.value}
207207

208208

209+
class DMNVariableMapping(TypedDict):
210+
form_variable: str
211+
dmn_variable: str
212+
213+
209214
class DMNConfig(TypedDict):
210215
plugin_id: str
211-
input_mapping: dict[str, str]
212-
output_mapping: dict[str, str]
216+
input_mapping: list[DMNVariableMapping]
217+
output_mapping: list[DMNVariableMapping]
213218
decision_definition_id: str
214219
decision_definition_version: str
215220

216221

217222
@dataclass
218223
class EvaluateDMNAction(ActionOperation):
219-
input_mapping: dict[str, str]
220-
output_mapping: dict[str, str]
224+
input_mapping: list[DMNVariableMapping]
225+
output_mapping: list[DMNVariableMapping]
221226
decision_definition_id: str
222227
plugin_id: str
223228
decision_definition_version: str = ""
@@ -236,7 +241,8 @@ def eval(
236241
# Mapping from form variables to DMN inputs
237242
data = FormioData(context)
238243
dmn_inputs = {
239-
key_dmn: data[key_form] for key_form, key_dmn in self.input_mapping.items()
244+
item["dmn_variable"]: data[item["form_variable"]]
245+
for item in self.input_mapping
240246
}
241247

242248
# Perform DMN call
@@ -249,9 +255,9 @@ def eval(
249255

250256
# Map DMN output to form variables
251257
return {
252-
key_form: dmn_outputs[key_dmn]
253-
for key_form, key_dmn in self.output_mapping.items()
254-
if key_dmn in dmn_outputs
258+
item["form_variable"]: dmn_outputs[item["dmn_variable"]]
259+
for item in self.output_mapping
260+
if item["dmn_variable"] in dmn_outputs
255261
}
256262

257263

src/openforms/submissions/tests/form_logic/test_modify_variables.py

+39-21
Original file line numberDiff line numberDiff line change
@@ -461,13 +461,19 @@ def test_evaluate_dmn_action(self, m):
461461
"action": {
462462
"type": LogicActionTypes.evaluate_dmn,
463463
"config": {
464-
"input_mapping": {
465-
"age": "ageDMN",
466-
"income": "incomeDMN",
467-
},
468-
"output_mapping": {
469-
"canApply": "canApplyDMN",
470-
},
464+
"input_mapping": [
465+
{"form_variable": "age", "dmn_variable": "ageDMN"},
466+
{
467+
"form_variable": "income",
468+
"dmn_variable": "incomeDMN",
469+
},
470+
],
471+
"output_mapping": [
472+
{
473+
"form_variable": "canApply",
474+
"dmn_variable": "canApplyDMN",
475+
}
476+
],
471477
"decision_definition_id": "determine-can-apply",
472478
"decision_definition_version": "1",
473479
"plugin_id": "camunda7",
@@ -568,13 +574,19 @@ def test_evaluate_dmn_with_nested_variables(self, m):
568574
"action": {
569575
"type": LogicActionTypes.evaluate_dmn,
570576
"config": {
571-
"input_mapping": {
572-
"age": "ageDMN",
573-
"income": "incomeDMN",
574-
},
575-
"output_mapping": {
576-
"yo.im.nested.canApply": "canApplyDMN",
577-
},
577+
"input_mapping": [
578+
{"form_variable": "age", "dmn_variable": "ageDMN"},
579+
{
580+
"form_variable": "income",
581+
"dmn_variable": "incomeDMN",
582+
},
583+
],
584+
"output_mapping": [
585+
{
586+
"form_variable": "yo.im.nested.canApply",
587+
"dmn_variable": "canApplyDMN",
588+
},
589+
],
578590
"decision_definition_id": "determine-can-apply",
579591
"decision_definition_version": "1",
580592
"plugin_id": "camunda7",
@@ -661,13 +673,19 @@ def test_evaluate_dmn_action_returns_empty_data(self, m):
661673
"action": {
662674
"type": LogicActionTypes.evaluate_dmn,
663675
"config": {
664-
"input_mapping": {
665-
"age": "ageDMN",
666-
"income": "incomeDMN",
667-
},
668-
"output_mapping": {
669-
"canApply": "canApplyDMN",
670-
},
676+
"input_mapping": [
677+
{"form_variable": "age", "dmn_variable": "ageDMN"},
678+
{
679+
"form_variable": "income",
680+
"dmn_variable": "incomeDMN",
681+
},
682+
],
683+
"output_mapping": [
684+
{
685+
"form_variable": "canApply",
686+
"dmn_variable": "canApplyDMN",
687+
},
688+
],
671689
"decision_definition_id": "determine-can-apply",
672690
"decision_definition_version": "1",
673691
"plugin_id": "camunda7",

0 commit comments

Comments
 (0)