From 567950eb061a96eb50e15d0541b92afa10afd4f2 Mon Sep 17 00:00:00 2001 From: silvia Date: Fri, 20 Aug 2021 16:07:19 +0200 Subject: [PATCH 1/3] :white_check_mark: [#575] Test selectboxes display --- .../submissions/tests/test_models.py | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/openforms/submissions/tests/test_models.py b/src/openforms/submissions/tests/test_models.py index 9f7faae537..777791fee9 100644 --- a/src/openforms/submissions/tests/test_models.py +++ b/src/openforms/submissions/tests/test_models.py @@ -74,3 +74,34 @@ def test_get_merged_data_with_component_types(self): "key5": {"type": "textfield", "value": "this is some inner text"}, }, ) + + def test_get_printable_data_with_selectboxes(self): + form_definition = FormDefinitionFactory.create( + configuration={ + "display": "form", + "components": [ + { + "key": "testSelectBoxes", + "type": "selectboxes", + "values": [ + {"values": "test1", "label": "test1", "shortcut": ""}, + {"values": "test2", "label": "test2", "shortcut": ""}, + {"values": "test3", "label": "test3", "shortcut": ""}, + ], + }, + ], + } + ) + submission = SubmissionFactory.create() + SubmissionStepFactory.create( + submission=submission, + data={"testSelectBoxes": {"test1": True, "test2": True, "test3": False}}, + form_step=FormStepFactory.create(form_definition=form_definition), + ) + + printable_data = submission.get_printable_data() + + self.assertEqual( + printable_data["testSelectBoxes"], + "test1, test2", + ) From e01b3950865eabffca2c7ee22e1f1118ab580804 Mon Sep 17 00:00:00 2001 From: silvia Date: Fri, 20 Aug 2021 16:08:01 +0200 Subject: [PATCH 2/3] :bug: [#575] Handle select boxes rendering --- src/openforms/submissions/models.py | 53 +++++++++++++++++------------ 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/src/openforms/submissions/models.py b/src/openforms/submissions/models.py index 1466399beb..33aa7595d1 100644 --- a/src/openforms/submissions/models.py +++ b/src/openforms/submissions/models.py @@ -4,7 +4,7 @@ from collections import defaultdict from dataclasses import dataclass from datetime import date, timedelta -from typing import Any, List, Mapping, Optional, Tuple +from typing import Any, Dict, List, Mapping, Optional, Tuple from django.contrib.postgres.fields import JSONField from django.core.files.base import ContentFile, File @@ -220,9 +220,11 @@ def get_merged_data_with_component_type(self) -> dict: ): components = step.form_step.form_definition.configuration["components"] flattened_components = get_flattened_components(components) - component_key_to_type = dict() - for component in flattened_components: - component_key_to_type[component["key"]] = component["type"] + component_key_to_type = { + component["key"]: component["type"] + for component in flattened_components + } + for key, value in step.data.items(): if key in merged_data: logger.warning( @@ -253,6 +255,30 @@ def get_merged_data(self) -> dict: return merged_data + def get_printable_data(self) -> Dict[str, str]: + printable_data = dict() + attachment_data = self.get_merged_attachments() + + for key, info in self.get_merged_data_with_component_type().items(): + if info["type"] == "file": + files = attachment_data.get(key) + if files: + printable_data[key] = _("attachment: %s") % ( + ", ".join(file.get_display_name() for file in files) + ) + else: + printable_data[key] = _("attachment") + elif info["type"] == "selectboxes": + formatted_select_boxes = ", ".join( + [label for label, selected in info["value"].items() if selected] + ) + printable_data[key] = formatted_select_boxes + else: + # more here? like getComponentValue() in the SDK? + printable_data[key] = info["value"] + + return printable_data + data = property(get_merged_data) data_with_component_type = property(get_merged_data_with_component_type) @@ -393,29 +419,14 @@ def __str__(self): def generate_submission_report_pdf(self) -> None: form = self.submission.form - - submission_data = dict() - attachment_data = self.submission.get_merged_attachments() - - for key, info in self.submission.get_merged_data_with_component_type().items(): - if info["type"] == "file": - files = attachment_data.get(key) - if files: - submission_data[key] = _("attachment: %s") % ( - ", ".join(file.get_display_name() for file in files) - ) - else: - submission_data[key] = _("attachment") - else: - # more here? like getComponentValue() in the SDK? - submission_data[key] = info["value"] + printable_data = self.submission.get_printable_data() html_report = render( request=None, template_name="report/submission_report.html", context={ "form": form, - "submission_data": submission_data, + "submission_data": printable_data, "submission": self.submission, }, ).content.decode("utf8") From 5ac9f349f95404562a982a32279408802182bbb2 Mon Sep 17 00:00:00 2001 From: silvia Date: Fri, 20 Aug 2021 17:08:36 +0200 Subject: [PATCH 3/3] :lipstick: [#575] Prevent table from running out of page --- .../submissions/templates/report/submission_report.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openforms/submissions/templates/report/submission_report.html b/src/openforms/submissions/templates/report/submission_report.html index a5555488c7..9802e0875a 100644 --- a/src/openforms/submissions/templates/report/submission_report.html +++ b/src/openforms/submissions/templates/report/submission_report.html @@ -22,7 +22,7 @@ table { border: 1px solid black; border-collapse: collapse; - table-layout: auto; + table-layout: fixed; width: 100%; } .table-cell-key {