Skip to content

Commit 389cfdd

Browse files
Merge branch 'url-date-and-time-additional-info' into deploy
2 parents f8678ba + d507593 commit 389cfdd

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from collective.volto.formsupport.interfaces import ICaptchaSupport
33
from collective.volto.formsupport.interfaces import IPostAdapter
44
from collective.volto.formsupport.restapi.services.submit_form.field import (
5+
construct_field,
56
construct_fields,
67
)
78
from collective.volto.formsupport.utils import get_blocks
@@ -18,6 +19,7 @@
1819

1920
import math
2021
import os
22+
from datetime import datetime
2123

2224
from plone.restapi.deserializer import json_body
2325
from plone.restapi.serializer.converters import json_compatible
@@ -266,7 +268,18 @@ def filter_parameters(self):
266268
"""
267269
do not send attachments fields.
268270
"""
269-
return [field for field in self.format_fields() if field.send_in_email]
271+
fields = [field for field in self.format_fields() if field.send_in_email]
272+
273+
additionalInfo = self.block['sendAdditionalInfo']
274+
275+
if "date" in additionalInfo:
276+
fields.append(construct_field({'field_id': 'date', 'label': 'Date', 'field_type': 'date', 'value': datetime.now()}))
277+
if "time" in additionalInfo:
278+
fields.append(construct_field({'field_id': 'time', 'label': 'Time','field_type': 'time', 'value': datetime.now()}))
279+
if "currentUrl" in additionalInfo:
280+
fields.append(construct_field({'field_id': 'url', 'label': 'URL', 'value': self.context.absolute_url_path()}))
281+
282+
return fields
270283

271284
def format_fields(self):
272285
fields_data = []

src/collective/volto/formsupport/datamanager/catalog.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def block_id(self):
4444
data = self.request.form
4545
return data.get("block_id", "")
4646

47-
def get_form_fields(self):
47+
def get_block(self):
4848
blocks = get_blocks(self.context)
4949

5050
if not blocks:
@@ -59,6 +59,11 @@ def get_form_fields(self):
5959
if not form_block:
6060
return {}
6161

62+
return form_block
63+
64+
def get_form_fields(self):
65+
form_block = self.get_block()
66+
6267
subblocks = form_block.get("subblocks", [])
6368

6469
# Add the 'custom_field_id' field back in as this isn't stored with each subblock
@@ -97,6 +102,8 @@ def add(self, data):
97102
record.attrs["fields_labels"] = fields_labels
98103
record.attrs["fields_order"] = fields_order
99104
record.attrs["date"] = datetime.now()
105+
if self.get_block()['sendAdditionalInfo']:
106+
record.attrs["url"] = self.context.absolute_url_path()
100107
record.attrs["block_id"] = self.block_id
101108
return self.soup.add(record)
102109

src/collective/volto/formsupport/restapi/services/form_data/csv.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ def get_data(self):
6868
store = getMultiAdapter((self.context, self.request), IFormDataStore)
6969
sbuf = StringIO()
7070
fixed_columns = ["date"]
71+
if "currentUrl" in self.form_block['sendAdditionalInfo']:
72+
fixed_columns.append("url")
7173
columns = []
7274

7375
rows = []

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ class DateField(Field):
159159
def display_value(self):
160160
return api.portal.get_localized_time(self.internal_value)
161161

162+
class TimeField(Field):
163+
def display_value(self):
164+
return api.portal.get_localized_time(self.internal_value, time_only=True)
165+
162166

163167
def construct_field(field_data):
164168
if field_data.get("widget") == "single_choice":
@@ -169,6 +173,8 @@ def construct_field(field_data):
169173
return EmailField(field_data)
170174
elif field_data.get("field_type") == "date":
171175
return DateField(field_data)
176+
elif field_data.get("field_type") == "time":
177+
return TimeField(field_data)
172178

173179
return Field(field_data)
174180

0 commit comments

Comments
 (0)