class CacheType(models.Base): __tablename__ = "cachetypes" engine = fields.StringField(required=True) host = fields.StringField(required=True, validators=[validators.Length(1, 256)]) port = fields.IntField( validators=[validators.Min(0), validators.Max(65535)]) username = fields.StringField() password = fields.StringField()
def test_max_validation(): validator = validators.Max(42) assert 42 == validator.maximum_value validator.validate(4) validator.validate(42) with pytest.raises(errors.ValidationError): validator.validate(42.01) with pytest.raises(errors.ValidationError): validator.validate(43)
class ConfigModel(TinyJsonModel): __tablename__ = "config" ENV = fields.StringField(required=True, validators=[validators.Length(3, 25)]) SECRET_KEY = fields.StringField(required=True, validators=[validators.Length(50, 64)]) APP_DIR = fields.StringField(required=True, validators=[validators.Length(1, 253)]) PROJECT_ROOT = fields.StringField( required=True, validators=[validators.Length(1, 256)]) BCRYPT_LOG_ROUNDS = fields.IntField( required=True, validators=[ validators.Min(4), validators.Max(10000) ]) # needs at least 4 to avoid "ValueError: Invalid rounds" DEBUG = fields.BoolField(required=True) ASSETS_DEBUG = fields.BoolField(required=True) DEBUG_TB_ENABLED = fields.BoolField(required=True) DEBUG_TB_INTERCEPT_REDIRECTS = fields.BoolField(required=True) CACHE_TYPE = fields.EmbeddedField(CacheType) SQLALCHEMY_TRACK_MODIFICATIONS = fields.BoolField(required=True) APP_NAME = fields.StringField(required=True, validators=[validators.Length(1, 32)]) APP_TMPL = fields.StringField(required=True, validators=[validators.Length(1, 32)]) DB_NAME = fields.StringField(required=True, validators=[validators.Length(1, 32)]) DB_PATH = fields.StringField(required=True, validators=[validators.Length(1, 256)]) SQLALCHEMY_DATABASE_URI = fields.StringField( required=True, validators=[validators.Length(1, 256)]) WTF_CSRF_ENABLED = fields.BoolField(required=True) TESTING = fields.BoolField(required=True) AUTH_ENGINES = fields.ListField([AuthType]) FLASK_DEBUG_DISABLE_STRICT = fields.BoolField(required=True) _last_update = fields.DateTimeField(required=True) _created_at = fields.DateTimeField(required=True) def __init__(self, *args, **kwargs): self._last_update = datetime.utcnow() self._created_at = self._last_update super(ConfigModel, self).__init__(*args, **kwargs) # Example model custom method def created_at_datetime(self): return self._created_at @property def getauthbackends(self): return self.AUTH_ENGINES class Meta: database = dbj
class People(models.Base): min_max_len = fields.ListField(str, validators=validators.Length(2, 4)) min_len = fields.ListField(str, validators=validators.Length(2)) max_len = fields.ListField(str, validators=validators.Length(4)) item_validator_int = fields.ListField( int, item_validators=[validators.Min(10), validators.Max(20)] ) item_validator_str = fields.ListField( str, item_validators=[validators.Length(10, 20), validators.Regex(r"\w+")], validators=[validators.Length(1, 2)], ) surname = fields.StringField()
class Person(models.Base): name = fields.StringField() surname = fields.StringField() age = fields.IntField(validators=validators.Max(18, True))
class MindMupRootNode(BaseIdea): attr = fields.EmbeddedField(rootAttributes) links = fields.ListField([Link]) formatVersion = fields.IntField( validators=[validators.Max(2), validators.Min(2)]) defaults = {'formatVersion': 2}