Skip to content

Commit c92fb4b

Browse files
Merge branch 'custom-label-mapping' into deploy
# Conflicts: # setup.py # src/collective/volto/formsupport/restapi/services/submit_form/field.py
2 parents e9a55e4 + e62a4f1 commit c92fb4b

File tree

3 files changed

+55
-5
lines changed

3 files changed

+55
-5
lines changed

CHANGES.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
Changelog
22
=========
33

4-
3.2.2 (unreleased)
4+
3.2.2 (2025-03-05)
55
------------------
66

7-
- Nothing changed yet.
7+
- Format list values in format_fields as comma separated strings to improve readability on email messages.
8+
[cekk]
89

910

1011
3.2.1 (2025-01-09)

src/collective/volto/formsupport/restapi/services/submit_form/field.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ def _attribute(attribute_name: str):
5959
def display_value(self):
6060
if self._display_value_mapping:
6161
return self._display_value_mapping.get(self._value, self._value)
62+
if isinstance(self._value, list):
63+
return ", ".join(self._value)
6264
return self._value
6365

6466
@property
@@ -139,8 +141,9 @@ def send_in_email(self):
139141
class EmailField(Field):
140142
def validate(self, request):
141143
super().validate(request=request)
142-
143-
if _isemail(self.internal_value) is None:
144+
if not self.internal_value:
145+
return
146+
if not _isemail(self.internal_value or ''):
144147
raise BadRequest(
145148
translate(
146149
_(
@@ -157,7 +160,7 @@ def validate(self, request):
157160

158161
class DateField(Field):
159162
def display_value(self):
160-
return api.portal.get_localized_time(self.internal_value)
163+
return api.portal.get_localized_time(self.internal_value or '')
161164

162165
class TimeField(Field):
163166
def display_value(self):
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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].internal_value, ["a", "b"])
46+
self.assertEqual(adapter.format_fields()[0].display_value, "a, b")

0 commit comments

Comments
 (0)