@@ -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
143143class 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
162162class 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
167167def construct_field (field_data ):
0 commit comments