Skip to content

Commit

Permalink
Merge pull request #3854 from open-formulieren/fix/3730-forgot-to-cha…
Browse files Browse the repository at this point in the history
…nge-things

[#3730] Forgot to update variable mappings everywhere
  • Loading branch information
sergei-maertens authored Feb 8, 2024
2 parents d6c358e + b51044e commit 1923b21
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 55 deletions.
10 changes: 0 additions & 10 deletions src/openforms/forms/api/parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,6 @@ class IgnoreConfigurationFieldCamelCaseJSONRenderer(CamelCaseJSONRenderer):
json_underscoreize = {"ignore_fields": ("configuration", "component_translations")}


class FormLogicRuleJSONParser(CamelCaseJSONParser):
# In the config field of the DMN Evaluate logic action, the mapping of the form variables to the DMN variables should
# not be changed by the parser
json_underscoreize = {"ignore_fields": ("input_mapping", "output_mapping")}


class FormLogicRuleJSONRenderer(CamelCaseJSONRenderer):
json_underscoreize = {"ignore_fields": ("input_mapping", "output_mapping")}


class FormCamelCaseJSONParser(FormCamelCaseMixin, CamelCaseJSONParser):
"""
Parser for Form resource.
Expand Down
4 changes: 0 additions & 4 deletions src/openforms/forms/api/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@
from .filters import FormDefinitionFilter, FormVariableFilter
from .parsers import (
FormCamelCaseJSONParser,
FormLogicRuleJSONParser,
FormLogicRuleJSONRenderer,
FormVariableJSONParser,
FormVariableJSONRenderer,
IgnoreConfigurationFieldCamelCaseJSONParser,
Expand Down Expand Up @@ -601,8 +599,6 @@ def variables_list(self, request, *args, **kwargs):
methods=["put"],
url_path="logic-rules",
url_name="logic-rules",
parser_classes=[FormLogicRuleJSONParser],
renderer_classes=[FormLogicRuleJSONRenderer],
)
@transaction.atomic
def logic_rules_bulk_update(self, request, *args, **kwargs):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,10 +142,10 @@ export const withInitialValues = {
decisionDefinitionId: 'approve-payment',
decisionDefinitionVersion: '1',
inputMapping: [
{formVar: 'name', dmnVar: 'dmnName'},
{formVar: 'surname', dmnVar: 'dmnSurname'},
{formVariable: 'name', dmnVariable: 'dmnName'},
{formVariable: 'surname', dmnVariable: 'dmnSurname'},
],
outputMapping: [{formVar: 'canApply', dmnVar: 'dmnCanApply'}],
outputMapping: [{formVariable: 'canApply', dmnVariable: 'dmnCanApply'}],
},
},
play: async ({canvasElement}) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,25 +49,25 @@ const VariableMapping = ({mappingName, values, formVariables}) => {
<tr key={index}>
<td>
<Field
name={`${mappingName}.${index}.formVar`}
htmlFor={`${mappingName}.${index}.formVar`}
name={`${mappingName}.${index}.formVariable`}
htmlFor={`${mappingName}.${index}.formVariable`}
>
<Select
id={`${mappingName}.${index}.formVar`}
id={`${mappingName}.${index}.formVariable`}
allowBlank={true}
choices={formVariables.map(variable => [variable.key, variable.name])}
{...getFieldProps(`${mappingName}.${index}.formVar`)}
{...getFieldProps(`${mappingName}.${index}.formVariable`)}
/>
</Field>
</td>
<td>
<Field
htmlFor={`${mappingName}.${index}.dmnVar`}
name={`${mappingName}.${index}.dmnVar`}
htmlFor={`${mappingName}.${index}.dmnVariable`}
name={`${mappingName}.${index}.dmnVariable`}
>
<TextInput
id={`${mappingName}.${index}.dmnVar`}
{...getFieldProps(`${mappingName}.${index}.dmnVar`)}
id={`${mappingName}.${index}.dmnVariable`}
{...getFieldProps(`${mappingName}.${index}.dmnVariable`)}
/>
</Field>
</td>
Expand All @@ -83,7 +83,7 @@ const VariableMapping = ({mappingName, values, formVariables}) => {
</table>
<ButtonContainer
onClick={() =>
arrayHelpers.insert(values[mappingName].length, {formVar: '', dmnVar: ''})
arrayHelpers.insert(values[mappingName].length, {formVariable: '', dmnVariable: ''})
}
>
<FormattedMessage description="Add variable button" defaultMessage="Add variable" />
Expand Down
22 changes: 14 additions & 8 deletions src/openforms/submissions/logic/actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,18 +206,23 @@ def eval(
return {var.key: result.value}


class DMNVariableMapping(TypedDict):
form_variable: str
dmn_variable: str


class DMNConfig(TypedDict):
plugin_id: str
input_mapping: dict[str, str]
output_mapping: dict[str, str]
input_mapping: list[DMNVariableMapping]
output_mapping: list[DMNVariableMapping]
decision_definition_id: str
decision_definition_version: str


@dataclass
class EvaluateDMNAction(ActionOperation):
input_mapping: dict[str, str]
output_mapping: dict[str, str]
input_mapping: list[DMNVariableMapping]
output_mapping: list[DMNVariableMapping]
decision_definition_id: str
plugin_id: str
decision_definition_version: str = ""
Expand All @@ -236,7 +241,8 @@ def eval(
# Mapping from form variables to DMN inputs
data = FormioData(context)
dmn_inputs = {
key_dmn: data[key_form] for key_form, key_dmn in self.input_mapping.items()
item["dmn_variable"]: data[item["form_variable"]]
for item in self.input_mapping
}

# Perform DMN call
Expand All @@ -249,9 +255,9 @@ def eval(

# Map DMN output to form variables
return {
key_form: dmn_outputs[key_dmn]
for key_form, key_dmn in self.output_mapping.items()
if key_dmn in dmn_outputs
item["form_variable"]: dmn_outputs[item["dmn_variable"]]
for item in self.output_mapping
if item["dmn_variable"] in dmn_outputs
}


Expand Down
60 changes: 39 additions & 21 deletions src/openforms/submissions/tests/form_logic/test_modify_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -461,13 +461,19 @@ def test_evaluate_dmn_action(self, m):
"action": {
"type": LogicActionTypes.evaluate_dmn,
"config": {
"input_mapping": {
"age": "ageDMN",
"income": "incomeDMN",
},
"output_mapping": {
"canApply": "canApplyDMN",
},
"input_mapping": [
{"form_variable": "age", "dmn_variable": "ageDMN"},
{
"form_variable": "income",
"dmn_variable": "incomeDMN",
},
],
"output_mapping": [
{
"form_variable": "canApply",
"dmn_variable": "canApplyDMN",
}
],
"decision_definition_id": "determine-can-apply",
"decision_definition_version": "1",
"plugin_id": "camunda7",
Expand Down Expand Up @@ -568,13 +574,19 @@ def test_evaluate_dmn_with_nested_variables(self, m):
"action": {
"type": LogicActionTypes.evaluate_dmn,
"config": {
"input_mapping": {
"age": "ageDMN",
"income": "incomeDMN",
},
"output_mapping": {
"yo.im.nested.canApply": "canApplyDMN",
},
"input_mapping": [
{"form_variable": "age", "dmn_variable": "ageDMN"},
{
"form_variable": "income",
"dmn_variable": "incomeDMN",
},
],
"output_mapping": [
{
"form_variable": "yo.im.nested.canApply",
"dmn_variable": "canApplyDMN",
},
],
"decision_definition_id": "determine-can-apply",
"decision_definition_version": "1",
"plugin_id": "camunda7",
Expand Down Expand Up @@ -661,13 +673,19 @@ def test_evaluate_dmn_action_returns_empty_data(self, m):
"action": {
"type": LogicActionTypes.evaluate_dmn,
"config": {
"input_mapping": {
"age": "ageDMN",
"income": "incomeDMN",
},
"output_mapping": {
"canApply": "canApplyDMN",
},
"input_mapping": [
{"form_variable": "age", "dmn_variable": "ageDMN"},
{
"form_variable": "income",
"dmn_variable": "incomeDMN",
},
],
"output_mapping": [
{
"form_variable": "canApply",
"dmn_variable": "canApplyDMN",
},
],
"decision_definition_id": "determine-can-apply",
"decision_definition_version": "1",
"plugin_id": "camunda7",
Expand Down

0 comments on commit 1923b21

Please sign in to comment.