@@ -34,19 +34,26 @@ async def validate_form_or_throw_error(
3434 tenant_id : str ,
3535):
3636 validation_errors : List [ErrorFormField ] = []
37- if len (config_form_fields ) != len (inputs ):
38- raise_bad_input_exception ("Are you sending too many / too few formFields?" )
37+ if len (config_form_fields ) < len (inputs ):
38+ raise_bad_input_exception ("Are you sending too many formFields?" )
3939
4040 for field in config_form_fields :
4141 input_field : Union [None , FormField ] = find_first_occurrence_in_list (
4242 lambda x : x .id == field .id , inputs
4343 )
44- if input_field is None or (input_field .value == "" and not field .optional ):
44+ is_invalid_value = input_field is None or input_field .value == ""
45+ if not field .optional and is_invalid_value :
4546 validation_errors .append (ErrorFormField (field .id , "Field is not optional" ))
46- else :
47- error = await field .validate (input_field .value , tenant_id )
48- if error is not None :
49- validation_errors .append (ErrorFormField (field .id , error ))
47+ continue
48+
49+ # If the field was invalid and not optional, execution won't reach here.
50+ # so we need to skip it if the value is invalid and optional.
51+ if is_invalid_value :
52+ continue
53+
54+ error = await field .validate (input_field .value , tenant_id )
55+ if error is not None :
56+ validation_errors .append (ErrorFormField (field .id , error ))
5057
5158 if len (validation_errors ) != 0 :
5259 # raise BadInputError(msg="Error in input formFields")
0 commit comments