HVAC / utils /validation.py
mabuseif's picture
Upload 13 files
a1d7129 verified
Raw
History Blame Contribute Delete
3.26 kB
"""
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
# Check if required
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 # Keep required fields as critical
))
is_valid = False
# Skip further validation if value is empty and not required
if input_value is None or input_value == "":
return is_valid, warnings
# Validate based on type
if validation_type == 'number':
try:
# Convert to float if it's a string
if isinstance(input_value, str):
input_value = float(input_value)
# Check min 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 # Changed to non-critical
))
is_valid = False
# Check max value
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 # Changed to non-critical
))
is_valid = False
except ValueError:
warnings.append(ValidationWarning(
"Invalid number format",
"Please enter a valid number",
is_critical=True # Keep format validation as critical
))
is_valid = False
elif validation_type == 'text':
# Add text validation if needed
pass
return is_valid, warnings