import logging
logging.basicConfig(level=logging.ERROR, format='%(asctime)s - %(levelname)s - %(message)s')
class FormFieldExtender:
def __init__(self, field_name, default_value=None, validation_function=None):
"""
Extends existing form field logic with default values and validation.
Args:
field_name (str): The name of the form field.
default_value (any, optional): The default value for the field. Defaults to None.
validation_function (callable, optional): A function to validate the field value. Defaults to None.
"""
self.field_name = field_name
self.default_value = default_value
self.validation_function = validation_function
def extend_field(self, field_value):
"""
Extends the existing form field logic.
Args:
field_value (any): The value provided for the form field.
Returns:
any: The validated and potentially modified field value. Returns None on validation failure.
"""
if field_value is None:
field_value = self.default_value # Use default if field is empty
if self.validation_function:
try:
validated_value = self.validation_function(field_value)
if validated_value is None:
logging.error(f"Validation failed for field '{self.field_name}' with value: {field_value}")
return None # Validation failed
field_value = validated_value
except Exception as e:
logging.error(f"Error during validation for field '{self.field_name}': {e}")
return None
return field_value
if __name__ == '__main__':
# Example Usage
def validate_email(email):
"""Simple email validation."""
if "@" not in email or "." not in email:
return None
return email
# Create a field extender for 'email'
email_extender = FormFieldExtender(field_name='email', validation_function=validate_email)
# Test cases
email1 = "test@example.com"
email2 = "invalid-email"
email3 = "" #empty string
validated_email1 = email_extender.extend_field(email1)
validated_email2 = email_extender.extend_field(email2)
validated_email3 = email_extender.extend_field(email3) #using default value
print(f"Validated email 1: {validated_email1}")
print(f"Validated email 2: {validated_email2}")
print(f"Validated email 3: {validated_email3}")
Add your comment