From 95ae8f44aa094442be05fa8df51ea74538e32a30 Mon Sep 17 00:00:00 2001 From: Sergei Maertens Date: Fri, 4 Nov 2022 15:59:17 +0100 Subject: [PATCH] :adhesive_bandaid: [#2135] -- adapt patch for when multiple steps are deleted at once --- .../submissions/models/submission_step.py | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/openforms/submissions/models/submission_step.py b/src/openforms/submissions/models/submission_step.py index 98198a44fc..f0e13de872 100644 --- a/src/openforms/submissions/models/submission_step.py +++ b/src/openforms/submissions/models/submission_step.py @@ -48,28 +48,30 @@ def _make_unfrozen(obj): # the FormStep in memory. def RECORD_HISTORICAL_FORM_STEP(collector, field, sub_objs, using): form_steps = list(collector.data[FormStep]) - assert ( - len(form_steps) == 1 - ), "Only this specific case for SubmissionStep cascade delete is supported" - form_step = form_steps[0] - serialized_form_definition = serializers.serialize( - "python", [form_step.form_definition] - )[0] - serialized_form_step = serializers.serialize("python", [form_step])[0] - - # update the history field - history_field = SubmissionStep._meta.get_field("form_step_history") - frozen_history = _make_frozen( - { - "form_step": serialized_form_step, - "form_definition": serialized_form_definition, - } - ) - collector.add_field_update(history_field, frozen_history, sub_objs) - # our own reference can now become NULL + # our own reference can become NULL, since we're copying the data to our history + # field below collector.add_field_update(field, None, sub_objs) + history_field = SubmissionStep._meta.get_field("form_step_history") + for submission_step in sub_objs: + form_step = submission_step.form_step + assert form_step in form_steps + + serialized_form_definition = serializers.serialize( + "python", [form_step.form_definition] + )[0] + serialized_form_step = serializers.serialize("python", [form_step])[0] + + # update the history field + frozen_history = _make_frozen( + { + "form_step": serialized_form_step, + "form_definition": serialized_form_definition, + } + ) + collector.add_field_update(history_field, frozen_history, [submission_step]) + class FrozenDjangoJSONEncoder(DjangoJSONEncoder): def default(self, o):