1. def sanitize_user_data(user_data):
  2. """
  3. Sanitizes user data for compatibility with older systems.
  4. Replaces potentially problematic values with safe alternatives.
  5. """
  6. sanitized_data = user_data.copy() #Avoid modifying the original dict
  7. # Replace potentially problematic characters in names/titles
  8. for key, value in sanitized_data.items():
  9. if isinstance(value, str):
  10. sanitized_data[key] = value.replace(" ", "_") #Replace spaces with underscores
  11. sanitized_data[key] = sanitized_data[key].replace("<", "&lt;") #Escape less than
  12. sanitized_data[key] = sanitized_data[key].replace(">", "&gt;") #Escape greater than
  13. sanitized_data[key] = sanitized_data[key].replace("\"", "&quot;") #Escape double quote
  14. sanitized_data[key] = sanitized_data[key].replace("'", "&#39;") #Escape single quote
  15. sanitized_data[key] = sanitized_data[key].replace("\\", "&#92;") #Escape backslash
  16. #Handle date formats
  17. if 'birthdate' in sanitized_data:
  18. try:
  19. #Attempt to convert to a standard format. Handle potential errors.
  20. from datetime import datetime
  21. birthdate_str = sanitized_data['birthdate']
  22. sanitized_data['birthdate'] = datetime.strptime(birthdate_str, '%Y-%m-%d').strftime('%Y%m%d') #YYYYMMDD
  23. except (ValueError, TypeError):
  24. sanitized_data['birthdate'] = None #Set to None if conversion fails
  25. #Handle phone numbers (remove special characters)
  26. if 'phone_number' in sanitized_data:
  27. if isinstance(sanitized_data['phone_number'], str):
  28. sanitized_data['phone_number'] = ''.join(filter(str.isdigit, sanitized_data['phone_number'])) #Keep only digits
  29. return sanitized_data

Add your comment