1. import logging
  2. logging.basicConfig(level=logging.ERROR, format='%(asctime)s - %(levelname)s - %(message)s')
  3. class FormFieldExtender:
  4. def __init__(self, field_name, default_value=None, validation_function=None):
  5. """
  6. Extends existing form field logic with default values and validation.
  7. Args:
  8. field_name (str): The name of the form field.
  9. default_value (any, optional): The default value for the field. Defaults to None.
  10. validation_function (callable, optional): A function to validate the field value. Defaults to None.
  11. """
  12. self.field_name = field_name
  13. self.default_value = default_value
  14. self.validation_function = validation_function
  15. def extend_field(self, field_value):
  16. """
  17. Extends the existing form field logic.
  18. Args:
  19. field_value (any): The value provided for the form field.
  20. Returns:
  21. any: The validated and potentially modified field value. Returns None on validation failure.
  22. """
  23. if field_value is None:
  24. field_value = self.default_value # Use default if field is empty
  25. if self.validation_function:
  26. try:
  27. validated_value = self.validation_function(field_value)
  28. if validated_value is None:
  29. logging.error(f"Validation failed for field '{self.field_name}' with value: {field_value}")
  30. return None # Validation failed
  31. field_value = validated_value
  32. except Exception as e:
  33. logging.error(f"Error during validation for field '{self.field_name}': {e}")
  34. return None
  35. return field_value
  36. if __name__ == '__main__':
  37. # Example Usage
  38. def validate_email(email):
  39. """Simple email validation."""
  40. if "@" not in email or "." not in email:
  41. return None
  42. return email
  43. # Create a field extender for 'email'
  44. email_extender = FormFieldExtender(field_name='email', validation_function=validate_email)
  45. # Test cases
  46. email1 = "test@example.com"
  47. email2 = "invalid-email"
  48. email3 = "" #empty string
  49. validated_email1 = email_extender.extend_field(email1)
  50. validated_email2 = email_extender.extend_field(email2)
  51. validated_email3 = email_extender.extend_field(email3) #using default value
  52. print(f"Validated email 1: {validated_email1}")
  53. print(f"Validated email 2: {validated_email2}")
  54. print(f"Validated email 3: {validated_email3}")

Add your comment