from tokenize import String from typing import List from django.core.exceptions import ValidationError from django.core.validators import validate_email from api.config import CALENDAR_FREQUENCIES def valid_frequency_format(freq: String): ''' Ve que el valor sea alguna de las frequencias calendario definidad en CALENDAR_FREQUENCIES o que sea un valor entero. ''' if freq not in CALENDAR_FREQUENCIES: if not freq.isdigit(): raise ValidationError("Debe ser una frequencia calendario o un entero positivo.") if int(freq) <= 0: raise ValidationError("Debe ser un entero positivo") def json_email_array(val: List): ''' Ve que el valor sea una lista de emails serializada en JSON. Precondicion: es una lista json vĂ¡lida ''' def check_email(email): valid = True try: validate_email(email) except ValidationError: valid = False return valid if not all(map(check_email, val)): raise ValidationError("Debe ser una lista de emails validos") def json_not_empty_string_array(val): ''' Ve que el valor sea una lista de strings serializada en JSON ''' valid = True # Ser una lista no vacia if (not (isinstance(val, list) and len(val) > 0)): valid = False # Ser una lista de strings if valid: for el in val: if not isinstance(el, str) or len(el) == 0: valid = False break if not valid: raise ValidationError( "Debe ser una lista no vacia de strings no vacios")