def validate_element(element, state, validators): """Apply a set of validators to an element. :param element: a `~flatland.Element` :param state: may be None, an optional value of supplied to ``element.validate`` :param validators: an iterable of validation functions :return: a truth value If validators is empty or otherwise false, a fallback validation of ``not element.is_empty`` will be used. Empty but optional elements are considered valid. Emits :class:`flatland.signals.validator_validated` after each validator is tested. """ if element.is_empty and element.optional: return True if not validators: valid = not element.is_empty if validator_validated.receivers: validator_validated.send(NotEmpty, element=element, state=state, result=valid) return valid for fn in validators: valid = fn(element, state) if validator_validated.receivers: validator_validated.send(fn, element=element, state=state, result=valid) if valid is None: return False elif valid is Skip: return True elif not valid or valid is SkipAll: return valid return True
def validate_element(element, state, validators): """Apply a set of validators to an element. :param element: a `~flatland.Element` :param state: may be None, an optional value of supplied to ``element.validate`` :param validators: an iterable of validation functions :return: a truth value If validators is empty or otherwise false, a fallback validation of ``not element.is_empty`` will be used. Empty but optional elements are considered valid. Emits :class:`flatland.signals.validator_validated` after each validator is tested. """ if element.is_empty and element.optional: return True if not validators: valid = not element.is_empty if validator_validated.receivers: validator_validated.send( NotEmpty, element=element, state=state, result=valid) return valid for fn in validators: valid = fn(element, state) if validator_validated.receivers: validator_validated.send( fn, element=element, state=state, result=valid) if valid is None: return False elif valid is Skip: return True elif not valid or valid is SkipAll: return valid return True