|
@@ -76,6 +76,7 @@ class BaseAppGenerator:
|
|
|
|
|
|
def _validate_input(self, *, inputs: Mapping[str, Any], var: "VariableEntity"):
|
|
|
user_input_value = inputs.get(var.variable)
|
|
|
+
|
|
|
if not user_input_value:
|
|
|
if var.required:
|
|
|
raise ValueError(f"{var.variable} is required in input form")
|
|
@@ -88,6 +89,7 @@ class BaseAppGenerator:
|
|
|
VariableEntityType.PARAGRAPH,
|
|
|
} and not isinstance(user_input_value, str):
|
|
|
raise ValueError(f"(type '{var.type}') {var.variable} in input form must be a string")
|
|
|
+
|
|
|
if var.type == VariableEntityType.NUMBER and isinstance(user_input_value, str):
|
|
|
# may raise ValueError if user_input_value is not a valid number
|
|
|
try:
|
|
@@ -97,25 +99,30 @@ class BaseAppGenerator:
|
|
|
return int(user_input_value)
|
|
|
except ValueError:
|
|
|
raise ValueError(f"{var.variable} in input form must be a valid number")
|
|
|
- if var.type == VariableEntityType.SELECT:
|
|
|
- options = var.options
|
|
|
- if user_input_value not in options:
|
|
|
- raise ValueError(f"{var.variable} in input form must be one of the following: {options}")
|
|
|
- elif var.type in {VariableEntityType.TEXT_INPUT, VariableEntityType.PARAGRAPH}:
|
|
|
- if var.max_length and len(user_input_value) > var.max_length:
|
|
|
- raise ValueError(f"{var.variable} in input form must be less than {var.max_length} characters")
|
|
|
- elif var.type == VariableEntityType.FILE:
|
|
|
- if not isinstance(user_input_value, dict) and not isinstance(user_input_value, File):
|
|
|
- raise ValueError(f"{var.variable} in input form must be a file")
|
|
|
- elif var.type == VariableEntityType.FILE_LIST:
|
|
|
- if not (
|
|
|
- isinstance(user_input_value, list)
|
|
|
- and (
|
|
|
- all(isinstance(item, dict) for item in user_input_value)
|
|
|
- or all(isinstance(item, File) for item in user_input_value)
|
|
|
- )
|
|
|
- ):
|
|
|
- raise ValueError(f"{var.variable} in input form must be a list of files")
|
|
|
+
|
|
|
+ match var.type:
|
|
|
+ case VariableEntityType.SELECT:
|
|
|
+ if user_input_value not in var.options:
|
|
|
+ raise ValueError(f"{var.variable} in input form must be one of the following: {var.options}")
|
|
|
+ case VariableEntityType.TEXT_INPUT | VariableEntityType.PARAGRAPH:
|
|
|
+ if var.max_length and len(user_input_value) > var.max_length:
|
|
|
+ raise ValueError(f"{var.variable} in input form must be less than {var.max_length} characters")
|
|
|
+ case VariableEntityType.FILE:
|
|
|
+ if not isinstance(user_input_value, dict) and not isinstance(user_input_value, File):
|
|
|
+ raise ValueError(f"{var.variable} in input form must be a file")
|
|
|
+ case VariableEntityType.FILE_LIST:
|
|
|
+ # if number of files exceeds the limit, raise ValueError
|
|
|
+ if not (
|
|
|
+ isinstance(user_input_value, list)
|
|
|
+ and (
|
|
|
+ all(isinstance(item, dict) for item in user_input_value)
|
|
|
+ or all(isinstance(item, File) for item in user_input_value)
|
|
|
+ )
|
|
|
+ ):
|
|
|
+ raise ValueError(f"{var.variable} in input form must be a list of files")
|
|
|
+
|
|
|
+ if var.max_length and len(user_input_value) > var.max_length:
|
|
|
+ raise ValueError(f"{var.variable} in input form must be less than {var.max_length} files")
|
|
|
|
|
|
return user_input_value
|
|
|
|