Source code for flask_validation.fields
import re
class _BaseField:
"""
Base field class
"""
def __init__(self, validator_function=None, enum=None, required: bool=True, allow_null: bool=False):
self.required = required
self.enum = enum
self.allow_null = allow_null
self.validator_function = validator_function
def validate(self, value):
if self.enum is not None and value not in self.enum:
return False
# allow_null은 decorators.py에서 체크
if self.validator_function is not None and not self.validator_function(value):
return False
[docs]class StringField(_BaseField):
"""
String field class
"""
def __init__(self, allow_empty: bool=True, min_length: int=None, max_length: int=None, regex=None, **kwargs):
self.allow_empty = allow_empty
self.min_length = min_length
self.max_length = max_length
self.regex = re.compile(regex) if regex else None
super(StringField, self).__init__(**kwargs)
[docs] def validate(self, value):
if not isinstance(value, str):
return False
if self.max_length is not None and len(value) > self.max_length:
return False
if self.min_length is not None and len(value) < self.min_length:
return False
if self.regex is not None and self.regex.match(value) is None:
return False
return super(StringField, self).validate(value)
[docs]class NumberField(_BaseField):
"""
Number field class
"""
def __init__(self, min_value=None, max_value=None, **kwargs):
self.min_value = min_value
self.max_value = max_value
super(NumberField, self).__init__(**kwargs)
[docs] def validate(self, value):
if self.min_value is not None and value < self.min_value:
return False
if self.max_value is not None and value > self.max_value:
return False
return super(NumberField, self).validate(value)
[docs]class IntField(NumberField):
"""
Int field class
"""
[docs] def validate(self, value):
if not isinstance(value, int):
return False
return super(IntField, self).validate(value)
[docs]class FloatField(NumberField):
"""
Float field class
"""
[docs] def validate(self, value):
if not isinstance(value, float):
return False
return super(FloatField, self).validate(value)
[docs]class BooleanField(_BaseField):
"""
Boolean field class
"""
[docs] def validate(self, value):
if not isinstance(value, bool):
return False
return super(BooleanField, self).validate(value)
[docs]class ListField(_BaseField):
"""
List field class
"""
def __init__(self, min_length: int=None, max_length: int=None, **kwargs):
self.min_length = min_length
self.max_length = max_length
super(ListField, self).__init__(**kwargs)
[docs] def validate(self, value):
if not isinstance(value, list):
return False
if self.max_length is not None and len(value) > self.max_length:
return False
if self.min_length is not None and len(value) < self.min_length:
return False
return super(ListField, self).validate(value)