Skip to content

Commit eae1c6a

Browse files
committed
Merge branch 'main' into csv_columns_ordering
2 parents 56c4fe3 + 14eb975 commit eae1c6a

File tree

4 files changed

+59
-5
lines changed

4 files changed

+59
-5
lines changed

CHANGES.rst

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Changelog
22
=========
33

4-
3.2.2 (unreleased)
4+
3.2.3 (unreleased)
55
------------------
66

77
- Now in the CSV export the obsolete records fields are ordered
@@ -12,6 +12,13 @@ Changelog
1212
[folix-01]
1313

1414

15+
3.2.2 (2025-03-05)
16+
------------------
17+
18+
- Format list values in format_fields as comma separated strings to improve readability on email messages.
19+
[cekk]
20+
21+
1522
3.2.1 (2025-01-09)
1623
------------------
1724

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
setup(
1717
name="collective.volto.formsupport",
18-
version="3.2.2.dev0",
18+
version="3.2.3.dev0",
1919
description="Add support for customizable forms in Volto",
2020
long_description=long_description,
2121
# Get more from https://pypi.org/classifiers/

src/collective/volto/formsupport/adapters/post.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def validate_email_fields(self):
149149
for form_field in self.form_data.get("data", []):
150150
if form_field.get("field_id", "") not in email_fields:
151151
continue
152-
if _isemail(form_field.get("value", "")) is None:
152+
if not _isemail(form_field.get("value", "")):
153153
raise BadRequest(
154154
translate(
155155
_(
@@ -262,9 +262,11 @@ def format_fields(self):
262262

263263
if field_id:
264264
field_index = field_ids.index(field_id)
265-
265+
value = field.get("value", "")
266+
if isinstance(value, list):
267+
field["value"] = ", ".join(value)
266268
if self.block["subblocks"][field_index].get("field_type") == "date":
267-
field["value"] = api.portal.get_localized_time(field["value"])
269+
field["value"] = api.portal.get_localized_time(value)
268270

269271
formatted_fields.append(field)
270272

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from collective.volto.formsupport.interfaces import IPostAdapter
2+
from collective.volto.formsupport.testing import VOLTO_FORMSUPPORT_INTEGRATION_TESTING
3+
from plone import api
4+
from plone.app.testing import setRoles
5+
from plone.app.testing import TEST_USER_ID
6+
from zope.component import getMultiAdapter
7+
8+
import unittest
9+
10+
11+
class TestFormDataAdapter(unittest.TestCase):
12+
layer = VOLTO_FORMSUPPORT_INTEGRATION_TESTING
13+
14+
def setUp(self):
15+
self.app = self.layer["app"]
16+
self.portal = self.layer["portal"]
17+
self.request = self.layer["request"]
18+
self.portal_url = self.portal.absolute_url()
19+
setRoles(self.portal, TEST_USER_ID, ["Manager"])
20+
21+
self.document = api.content.create(
22+
type="Document",
23+
title="Example context",
24+
container=self.portal,
25+
)
26+
self.document.blocks = {
27+
"form-id": {
28+
"@type": "form",
29+
"send": ["recipient"],
30+
"subblocks": [
31+
{
32+
"field_id": "xxx",
33+
"field_type": "text",
34+
},
35+
],
36+
}
37+
}
38+
39+
def test_format_fields_join_list_values(self):
40+
self.request["BODY"] = (
41+
b'{"data": [{"field_id": "xxx", "value": ["a", "b"]}], "block_id": "form-id"}'
42+
)
43+
adapter = getMultiAdapter((self.document, self.request), IPostAdapter)
44+
45+
self.assertEqual(adapter.format_fields()[0]["value"], "a, b")

0 commit comments

Comments
 (0)