def is_snowflake(self, value): try: value = int(value) except (TypeError, ValueError): msg = self.ERRORS['not_snowflake'] raise FieldValidationError(msg) from None if value.bit_length() > 64: msg = self.ERRORS['not_snowflake'] raise FieldValidationError(msg) from None
def validate_min(self, value): if self.min is None: return if value < self.min: msg = self.ERRORS['min'].format(value, self.min) raise FieldValidationError(msg) from None
def validate_required(self, value): if value is None: if self.required: msg = self.ERRORS['required'] raise FieldValidationError(msg, stop_validation=True) from None else: raise StopValidation()
def validate_max(self, value): if self.max is None: return if value > self.max: msg = self.ERRORS['max'].format(value, self.max) raise FieldValidationError(msg) from None
def validate_max_length(self, value): if value is None: return if self.max_length != -1: if len(value) > self.max_length: msg = self.ERRORS['max_length'].format(value, self.max_length) raise FieldValidationError(msg)
def validate(self, value): errors = [] for validator in self.validators: try: validator(value) except FieldValidationError as e: errors += e.errors if e.stop_validation: break except StopValidation: break if errors: raise FieldValidationError(*errors) return True
def is_integer(self, value): try: int(value) except (TypeError, ValueError): msg = self.ERRORS['not_integer'] raise FieldValidationError(msg, stop_validation=True) from None
def validate_choices(self, value): if self.choices is not None: if value not in self.choices: msg = self.ERRORS['choices'].format(self.choices) raise FieldValidationError(msg, stop_validation=True) from None
def validate_url(self, value): if not self.URL_RX.match(value): raise FieldValidationError( self.MESSAGES['invalid_url'].format(value)) from None
def validate_regex(self, value): rx = self.rx if rx is not None: if not rx.match(value): msg = self.ERRORS['no_match'].format(value, rx.pattern) raise FieldValidationError(msg) from None
def validate_length(self, value): if self.length != -1: if len(value) != self.length: msg = self.ERRORS['length'].format(value, self.length) raise FieldValidationError(msg)
def is_string(self, value): if not isinstance(value, str): msg = self.ERRORS['not_string'].format(value) raise FieldValidationError(msg, stop_validation=True) from None
def is_boolean(self, value): if not isinstance(value, bool): msg = self.ERRORS['not_boolean'] raise FieldValidationError(msg) from None
def not_null(self, value): if value == 0: raise FieldValidationError('Cooldown cannot be null') from None
def validate_subreddit(self, value): pattern = r"\A[A-Za-z0-9][A-Za-z0-9_]{2,20}\Z" if not re.match(pattern, value): msg = self.ERRORS['invalid_subreddit'].format(value) raise FieldValidationError(msg) from None
def validate_streamer(self, value): pattern = r'^[a-z0-9_]{3,25}$' if not re.match(pattern, value): msg = self.ERRORS['invalid_streamer'].format(value) raise FieldValidationError(msg) from None