41 lines
2.2 KiB
Python
41 lines
2.2 KiB
Python
from functions.validate_values import validate_value
|
|
|
|
# Validate the configuration file to ensure all attributes are properly defined.
|
|
def validate_config(item_attributes):
|
|
for attrib_name, attrib in item_attributes.items():
|
|
# Check for required fields
|
|
if not attrib.display_name:
|
|
return f"Missing display name for attribute '{attrib_name}'."
|
|
if not attrib.html_input_type:
|
|
return f"Missing input type for attribute '{attrib_name}'."
|
|
elif attrib.html_input_type not in ["text", "number", "date", "select"]:
|
|
return f"Invalid input type for attribute '{attrib_name}'."
|
|
elif attrib.html_input_type == "select" and not attrib.options:
|
|
return f"Selection missing options for attribute '{attrib_name}'."
|
|
|
|
# Validate min and max values
|
|
if attrib.min or attrib.max:
|
|
if attrib.html_input_type not in ["number", "date"]:
|
|
return f"'{attrib.display_name}' must be of type 'number' or 'date' to have min or max values."
|
|
else:
|
|
validation_result = validate_value(attrib, attrib.min)
|
|
if validation_result != "Ok":
|
|
return f"Invalid default value for attribute '{attrib_name}': {validation_result}"
|
|
validation_result = validate_value(attrib, attrib.min)
|
|
if validation_result != "Ok":
|
|
return f"Invalid default value for attribute '{attrib_name}': {validation_result}"
|
|
|
|
# Validate default value
|
|
if attrib.default_val:
|
|
validation_result = validate_value(attrib, attrib.default_val)
|
|
if validation_result != "Ok":
|
|
return f"Invalid default value for attribute '{attrib_name}': {validation_result}"
|
|
|
|
# Validate comparison
|
|
if attrib.compareto:
|
|
if attrib.compareto[0] not in ["lt", "gt", "le", "ge", "eq"]:
|
|
return f"Invalid comparison operator for attribute '{attrib_name}'. Valid operators are: lt, gt, le, ge, eq."
|
|
if attrib.compareto[1] not in item_attributes:
|
|
return f"Invalid reference attribute '{attrib.compareto[1]}' for comparison in attribute '{attrib_name}'."
|
|
|
|
return "Ok" |