validators.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from tokenize import String
  2. from typing import List
  3. from django.core.exceptions import ValidationError
  4. from django.core.validators import validate_email
  5. from api.config import CALENDAR_FREQUENCIES
  6. def valid_frequency_format(freq: String):
  7. '''
  8. Ve que el valor sea alguna de las frequencias calendario definidad en CALENDAR_FREQUENCIES
  9. '''
  10. if freq not in CALENDAR_FREQUENCIES:
  11. raise ValidationError("Debe ser una frequencia calendario.")
  12. def json_email_array(val: List):
  13. '''
  14. Ve que el valor sea una lista de emails serializada en JSON.
  15. Precondicion: es una lista json válida
  16. '''
  17. def check_email(email):
  18. valid = True
  19. try:
  20. validate_email(email)
  21. except ValidationError:
  22. valid = False
  23. return valid
  24. if not all(map(check_email, val)):
  25. raise ValidationError("Debe ser una lista de emails validos")
  26. def json_not_empty_string_array(val):
  27. '''
  28. Ve que el valor sea una lista de strings serializada en JSON
  29. '''
  30. valid = True
  31. # Ser una lista no vacia
  32. if (not (isinstance(val, list) and len(val) > 0)):
  33. valid = False
  34. # Ser una lista de strings
  35. if valid:
  36. for el in val:
  37. if not isinstance(el, str) or len(el) == 0:
  38. valid = False
  39. break
  40. if not valid:
  41. raise ValidationError(
  42. "Debe ser una lista no vacia de strings no vacios")