Skip to content

Commit

Permalink
Merge branch 'url-date-and-time-additional-info' into deploy
Browse files Browse the repository at this point in the history
  • Loading branch information
JeffersonBledsoe committed Jan 20, 2025
2 parents f8678ba + d507593 commit 389cfdd
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 2 deletions.
15 changes: 14 additions & 1 deletion src/collective/volto/formsupport/adapters/post.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from collective.volto.formsupport.interfaces import ICaptchaSupport
from collective.volto.formsupport.interfaces import IPostAdapter
from collective.volto.formsupport.restapi.services.submit_form.field import (
construct_field,
construct_fields,
)
from collective.volto.formsupport.utils import get_blocks
Expand All @@ -18,6 +19,7 @@

import math
import os
from datetime import datetime

from plone.restapi.deserializer import json_body
from plone.restapi.serializer.converters import json_compatible
Expand Down Expand Up @@ -266,7 +268,18 @@ def filter_parameters(self):
"""
do not send attachments fields.
"""
return [field for field in self.format_fields() if field.send_in_email]
fields = [field for field in self.format_fields() if field.send_in_email]

additionalInfo = self.block['sendAdditionalInfo']

if "date" in additionalInfo:
fields.append(construct_field({'field_id': 'date', 'label': 'Date', 'field_type': 'date', 'value': datetime.now()}))
if "time" in additionalInfo:
fields.append(construct_field({'field_id': 'time', 'label': 'Time','field_type': 'time', 'value': datetime.now()}))
if "currentUrl" in additionalInfo:
fields.append(construct_field({'field_id': 'url', 'label': 'URL', 'value': self.context.absolute_url_path()}))

return fields

def format_fields(self):
fields_data = []
Expand Down
9 changes: 8 additions & 1 deletion src/collective/volto/formsupport/datamanager/catalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def block_id(self):
data = self.request.form
return data.get("block_id", "")

def get_form_fields(self):
def get_block(self):
blocks = get_blocks(self.context)

if not blocks:
Expand All @@ -59,6 +59,11 @@ def get_form_fields(self):
if not form_block:
return {}

return form_block

def get_form_fields(self):
form_block = self.get_block()

subblocks = form_block.get("subblocks", [])

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ def get_data(self):
store = getMultiAdapter((self.context, self.request), IFormDataStore)
sbuf = StringIO()
fixed_columns = ["date"]
if "currentUrl" in self.form_block['sendAdditionalInfo']:
fixed_columns.append("url")
columns = []

rows = []
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,10 @@ class DateField(Field):
def display_value(self):
return api.portal.get_localized_time(self.internal_value)

class TimeField(Field):
def display_value(self):
return api.portal.get_localized_time(self.internal_value, time_only=True)


def construct_field(field_data):
if field_data.get("widget") == "single_choice":
Expand All @@ -169,6 +173,8 @@ def construct_field(field_data):
return EmailField(field_data)
elif field_data.get("field_type") == "date":
return DateField(field_data)
elif field_data.get("field_type") == "time":
return TimeField(field_data)

return Field(field_data)

Expand Down

0 comments on commit 389cfdd

Please sign in to comment.