Skip to content

Commit ad269a9

Browse files
Fix error handling
2 parents d954659 + e62a4f1 commit ad269a9

File tree

2 files changed

+22
-22
lines changed
  • src/collective/volto/formsupport/restapi/services/submit_form

2 files changed

+22
-22
lines changed

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

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,19 @@ def _attribute(attribute_name: str):
5050
_attribute("use_as_reply_to")
5151
_attribute("use_as_reply_bcc")
5252
self.required = field_data.get("required")
53-
self.validations = field_data.get("validations")
53+
self.validations = field_data.get("validations", {})
5454
self._display_value_mapping = field_data.get("dislpay_value_mapping")
5555
self._value = field_data.get("value", "")
5656
self._custom_field_id = field_data.get("custom_field_id")
57-
self._label = field_data.get("label")
57+
self._label = field_data.get("label", "")
5858
self._field_id = field_data.get("field_id", "")
5959

6060
@property
6161
def display_value(self):
6262
if self._display_value_mapping:
6363
return self._display_value_mapping.get(self._value, self._value)
6464
if isinstance(self._value, list):
65-
return ", ".join(self._value)
65+
return ", ".join(self._value)
6666
return self._value
6767

6868
@property
@@ -92,14 +92,14 @@ def field_id(self):
9292
def send_in_email(self):
9393
return True
9494

95-
def validate(self):
95+
def validate(self, request):
9696
# Making sure we've got a validation that actually exists.
9797
if not self._value and not self.required:
9898
return
9999
errors = {}
100100

101101
if self.required and not self.internal_value:
102-
errors['required'] = 'This field is required'
102+
errors["required"] = "This field is required"
103103

104104
available_validations = [
105105
validation
@@ -119,7 +119,7 @@ def validate(self):
119119
errors[validation._name] = error
120120

121121
return (
122-
errors if errors else None
122+
errors
123123
) # Return None to match how errors normally return in z3c.form
124124

125125

@@ -142,26 +142,26 @@ def send_in_email(self):
142142

143143
class EmailField(Field):
144144
def validate(self, request):
145-
super().validate(request=request)
146-
147-
if not _isemail(self.internal_value):
148-
raise BadRequest(
149-
translate(
150-
_(
151-
"wrong_email",
152-
default='Email not valid in "${field}" field.',
153-
mapping={
154-
"field": self.label,
155-
},
156-
),
157-
context=request,
158-
)
145+
errors = super().validate(request=request)
146+
if not self.internal_value:
147+
return
148+
if not _isemail(self.internal_value or ""):
149+
errors["validation"] = translate(
150+
_(
151+
"wrong_email",
152+
default='Email not valid in "${field}" field.',
153+
mapping={
154+
"field": self.label,
155+
},
156+
),
157+
context=request,
159158
)
159+
return errors
160160

161161

162162
class DateField(Field):
163163
def display_value(self):
164-
return api.portal.get_localized_time(self.internal_value)
164+
return api.portal.get_localized_time(self.internal_value or "")
165165

166166

167167
def construct_field(field_data):

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ def reply(self):
132132
)
133133

134134
if should_show:
135-
field_errors = field.validate()
135+
field_errors = field.validate(self.request)
136136

137137
if field_errors:
138138
errors[field.field_id] = field_errors

0 commit comments

Comments
 (0)