|
3 | 3 | import elasticapm
|
4 | 4 | from json_logic import jsonLogic
|
5 | 5 |
|
| 6 | +from openforms.formio.datastructures import FormioData |
6 | 7 | from openforms.forms.models import FormLogic, FormStep
|
7 | 8 |
|
8 | 9 | from ..models import Submission, SubmissionStep
|
9 | 10 | from .actions import ActionOperation
|
10 |
| -from .datastructures import DataContainer |
11 | 11 | from .log_utils import log_errors
|
12 | 12 |
|
13 | 13 |
|
@@ -108,7 +108,7 @@ def get_current_step(submission: Submission) -> SubmissionStep | None:
|
108 | 108 |
|
109 | 109 | def iter_evaluate_rules(
|
110 | 110 | rules: Iterable[FormLogic],
|
111 |
| - data_container: DataContainer, |
| 111 | + data_container: FormioData, |
112 | 112 | submission: Submission,
|
113 | 113 | ) -> Iterator[ActionOperation]:
|
114 | 114 | """
|
@@ -137,15 +137,18 @@ def iter_evaluate_rules(
|
137 | 137 | triggered = False
|
138 | 138 | with log_errors(rule.json_logic_trigger, rule):
|
139 | 139 | triggered = bool(
|
140 |
| - jsonLogic(rule.json_logic_trigger, data_container.data) |
| 140 | + jsonLogic(rule.json_logic_trigger, data_container) |
141 | 141 | )
|
142 | 142 |
|
143 | 143 | if not triggered:
|
144 | 144 | continue
|
145 | 145 |
|
146 | 146 | for operation in rule.action_operations:
|
147 | 147 | if mutations := operation.eval(
|
148 |
| - data_container.data, submission=submission |
| 148 | + data_container, submission=submission |
149 | 149 | ):
|
| 150 | + # TODO-5139: not sure if FormioData should track the changes, seems |
| 151 | + # like a task for iter_evaluate_rules itself. |
150 | 152 | data_container.update(mutations)
|
| 153 | + data_container.track_updates(mutations) |
151 | 154 | yield operation
|
0 commit comments