diff --git a/functions/validate_config.py b/functions/validate_config.py index 9a6e3c8..e8f8d6e 100644 --- a/functions/validate_config.py +++ b/functions/validate_config.py @@ -16,7 +16,14 @@ def validate_config(item_attributes): # 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." + 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: diff --git a/functions/validate_values.py b/functions/validate_values.py index fb165d1..d08aec0 100644 --- a/functions/validate_values.py +++ b/functions/validate_values.py @@ -21,13 +21,12 @@ def validate_value(attrib, input_val): elif attrib.html_input_type == "date": try: input_val = datetime.strptime(input_val, "%Y-%m-%d") # Validate date format - except ValueError: + if attrib.min is not None and input_val < datetime.strptime(attrib.min, "%Y-%m-%d"): + return f"{attrib.display_name} must be on or after {attrib.min}." + if attrib.max is not None and input_val > datetime.strptime(attrib.max, "%Y-%m-%d"): + return f"{attrib.display_name} must be on or before {attrib.max}." + except: return f"{attrib.display_name} must be a valid date in YYYY-MM-DD format." - - if attrib.min is not None and input_val < datetime.strptime(attrib.min, "%Y-%m-%d"): - return f"{attrib.display_name} must be on or after {attrib.min}." - if attrib.max is not None and input_val > datetime.strptime(attrib.max, "%Y-%m-%d"): - return f"{attrib.display_name} must be on or before {attrib.max}." elif attrib.html_input_type == "select": if input_val not in attrib.options: return f"{attrib.display_name} must be one of {attrib.options}."