| | """ |
| | Validation utilities for HVAC Load Calculator |
| | |
| | This module provides validation functions for input data in the HVAC Load Calculator. |
| | """ |
| |
|
| | class ValidationWarning: |
| | """ |
| | A class to represent validation warnings. |
| | """ |
| | |
| | def __init__(self, message, suggestion, is_critical=False): |
| | """ |
| | Initialize a validation warning. |
| | |
| | Args: |
| | message (str): Warning message |
| | suggestion (str): Suggestion for fixing the warning |
| | is_critical (bool): Whether the warning is critical (prevents proceeding) |
| | """ |
| | self.message = message |
| | self.suggestion = suggestion |
| | self.is_critical = is_critical |
| |
|
| |
|
| | def validate_input(input_value, validation_type, min_value=None, max_value=None, required=False): |
| | """ |
| | Validate an input value. |
| | |
| | Args: |
| | input_value: Value to validate |
| | validation_type (str): Type of validation ('number', 'text', etc.) |
| | min_value: Minimum allowed value (for numeric inputs) |
| | max_value: Maximum allowed value (for numeric inputs) |
| | required (bool): Whether the input is required |
| | |
| | Returns: |
| | tuple: (is_valid, warnings) |
| | """ |
| | warnings = [] |
| | is_valid = True |
| | |
| | |
| | if required and (input_value is None or input_value == "" or (isinstance(input_value, (int, float)) and input_value == 0)): |
| | warnings.append(ValidationWarning( |
| | "Required field is empty", |
| | "Please provide a value for this field", |
| | is_critical=True |
| | )) |
| | is_valid = False |
| | |
| | |
| | if input_value is None or input_value == "": |
| | return is_valid, warnings |
| | |
| | |
| | if validation_type == 'number': |
| | try: |
| | |
| | if isinstance(input_value, str): |
| | input_value = float(input_value) |
| | |
| | |
| | if min_value is not None and input_value < min_value: |
| | warnings.append(ValidationWarning( |
| | f"Value is below minimum ({min_value})", |
| | f"Please enter a value greater than or equal to {min_value}", |
| | is_critical=False |
| | )) |
| | is_valid = False |
| | |
| | |
| | if max_value is not None and input_value > max_value: |
| | warnings.append(ValidationWarning( |
| | f"Value exceeds maximum ({max_value})", |
| | f"Please enter a value less than or equal to {max_value}", |
| | is_critical=False |
| | )) |
| | is_valid = False |
| | |
| | except ValueError: |
| | warnings.append(ValidationWarning( |
| | "Invalid number format", |
| | "Please enter a valid number", |
| | is_critical=True |
| | )) |
| | is_valid = False |
| | |
| | elif validation_type == 'text': |
| | |
| | pass |
| | |
| | return is_valid, warnings |
| |
|