perf: 优化validate_annotation中各装饰器逻辑
This commit is contained in:
@@ -72,7 +72,7 @@ class ValidateFields:
|
|||||||
async def wrapper(*args, **kwargs):
|
async def wrapper(*args, **kwargs):
|
||||||
validate_model = kwargs.get(self.validate_model)
|
validate_model = kwargs.get(self.validate_model)
|
||||||
if isinstance(validate_model, BaseModel) and hasattr(validate_model, self.validate_function):
|
if isinstance(validate_model, BaseModel) and hasattr(validate_model, self.validate_function):
|
||||||
validate_function = getattr(validate_model, self.validate_function, None)
|
validate_function = getattr(validate_model, self.validate_function)
|
||||||
if validate_function is not None and callable(validate_function):
|
if validate_function is not None and callable(validate_function):
|
||||||
validate_function()
|
validate_function()
|
||||||
return await func(*args, **kwargs)
|
return await func(*args, **kwargs)
|
||||||
@@ -107,51 +107,52 @@ class NetWork:
|
|||||||
@wraps(func)
|
@wraps(func)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
validate_model = args[0]
|
validate_model = args[0]
|
||||||
if isinstance(validate_model, BaseModel):
|
if isinstance(validate_model, BaseModel) and hasattr(validate_model, self.field_name):
|
||||||
field_value = getattr(validate_model, self.field_name)
|
field_value = getattr(validate_model, self.field_name)
|
||||||
try:
|
if field_value:
|
||||||
if self.field_type == 'AnyUrl':
|
try:
|
||||||
NetWorkAnnotationModel(any_url=field_value)
|
if self.field_type == 'AnyUrl':
|
||||||
elif self.field_type == 'AnyHttpUrl':
|
NetWorkAnnotationModel(any_url=field_value)
|
||||||
NetWorkAnnotationModel(any_http_url=field_value)
|
elif self.field_type == 'AnyHttpUrl':
|
||||||
elif self.field_type == 'HttpUrl':
|
NetWorkAnnotationModel(any_http_url=field_value)
|
||||||
NetWorkAnnotationModel(http_url=field_value)
|
elif self.field_type == 'HttpUrl':
|
||||||
elif self.field_type == 'AnyWebsocketUrl':
|
NetWorkAnnotationModel(http_url=field_value)
|
||||||
NetWorkAnnotationModel(any_websocket_url=field_value)
|
elif self.field_type == 'AnyWebsocketUrl':
|
||||||
elif self.field_type == 'WebsocketUrl':
|
NetWorkAnnotationModel(any_websocket_url=field_value)
|
||||||
NetWorkAnnotationModel(websocket_url=field_value)
|
elif self.field_type == 'WebsocketUrl':
|
||||||
elif self.field_type == 'FileUrl':
|
NetWorkAnnotationModel(websocket_url=field_value)
|
||||||
NetWorkAnnotationModel(file_url=field_value)
|
elif self.field_type == 'FileUrl':
|
||||||
elif self.field_type == 'FtpUrl':
|
NetWorkAnnotationModel(file_url=field_value)
|
||||||
NetWorkAnnotationModel(ftp_url=field_value)
|
elif self.field_type == 'FtpUrl':
|
||||||
elif self.field_type == 'PostgresDsn':
|
NetWorkAnnotationModel(ftp_url=field_value)
|
||||||
NetWorkAnnotationModel(postgres_dsn=field_value)
|
elif self.field_type == 'PostgresDsn':
|
||||||
elif self.field_type == 'CockroachDsn':
|
NetWorkAnnotationModel(postgres_dsn=field_value)
|
||||||
NetWorkAnnotationModel(cockroach_dsn=field_value)
|
elif self.field_type == 'CockroachDsn':
|
||||||
elif self.field_type == 'AmqpDsn':
|
NetWorkAnnotationModel(cockroach_dsn=field_value)
|
||||||
NetWorkAnnotationModel(amqp_dsn=field_value)
|
elif self.field_type == 'AmqpDsn':
|
||||||
elif self.field_type == 'RedisDsn':
|
NetWorkAnnotationModel(amqp_dsn=field_value)
|
||||||
NetWorkAnnotationModel(redis_dsn=field_value)
|
elif self.field_type == 'RedisDsn':
|
||||||
elif self.field_type == 'MongoDsn':
|
NetWorkAnnotationModel(redis_dsn=field_value)
|
||||||
NetWorkAnnotationModel(mongo_dsn=field_value)
|
elif self.field_type == 'MongoDsn':
|
||||||
elif self.field_type == 'KafkaDsn':
|
NetWorkAnnotationModel(mongo_dsn=field_value)
|
||||||
NetWorkAnnotationModel(kafka_dsn=field_value)
|
elif self.field_type == 'KafkaDsn':
|
||||||
elif self.field_type == 'NatsDsn':
|
NetWorkAnnotationModel(kafka_dsn=field_value)
|
||||||
NetWorkAnnotationModel(nats_dsn=field_value)
|
elif self.field_type == 'NatsDsn':
|
||||||
elif self.field_type == 'MySQLDsn':
|
NetWorkAnnotationModel(nats_dsn=field_value)
|
||||||
NetWorkAnnotationModel(mysql_dsn=field_value)
|
elif self.field_type == 'MySQLDsn':
|
||||||
elif self.field_type == 'MariaDBDsn':
|
NetWorkAnnotationModel(mysql_dsn=field_value)
|
||||||
NetWorkAnnotationModel(mariadb_dsn=field_value)
|
elif self.field_type == 'MariaDBDsn':
|
||||||
elif self.field_type == 'ClickHouseDsn':
|
NetWorkAnnotationModel(mariadb_dsn=field_value)
|
||||||
NetWorkAnnotationModel(clickhouse_dsn=field_value)
|
elif self.field_type == 'ClickHouseDsn':
|
||||||
elif self.field_type == 'EmailStr':
|
NetWorkAnnotationModel(clickhouse_dsn=field_value)
|
||||||
NetWorkAnnotationModel(email_str=field_value)
|
elif self.field_type == 'EmailStr':
|
||||||
elif self.field_type == 'NameEmail':
|
NetWorkAnnotationModel(email_str=field_value)
|
||||||
NetWorkAnnotationModel(name_email=field_value)
|
elif self.field_type == 'NameEmail':
|
||||||
elif self.field_type == 'IPvAnyAddress':
|
NetWorkAnnotationModel(name_email=field_value)
|
||||||
NetWorkAnnotationModel(ipv_any_address=field_value)
|
elif self.field_type == 'IPvAnyAddress':
|
||||||
except (ValidationError, ValueError):
|
NetWorkAnnotationModel(ipv_any_address=field_value)
|
||||||
raise FieldValidatorException(message=self.message if self.message else f'{self.field_name}不是正确的{self.field_type}类型')
|
except (ValidationError, ValueError):
|
||||||
|
raise FieldValidatorException(message=self.message if self.message else f'{self.field_name}不是正确的{self.field_type}类型')
|
||||||
return func(*args, **kwargs)
|
return func(*args, **kwargs)
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
@@ -174,7 +175,7 @@ class NotBlank:
|
|||||||
@wraps(func)
|
@wraps(func)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
validate_model = args[0]
|
validate_model = args[0]
|
||||||
if isinstance(validate_model, BaseModel):
|
if isinstance(validate_model, BaseModel) and hasattr(validate_model, self.field_name):
|
||||||
field_value = getattr(validate_model, self.field_name)
|
field_value = getattr(validate_model, self.field_name)
|
||||||
if field_value is None or field_value == '' or field_value == [] or field_value == () or field_value == {}:
|
if field_value is None or field_value == '' or field_value == [] or field_value == () or field_value == {}:
|
||||||
raise FieldValidatorException(message=self.message if self.message else f'{self.field_name}不能为空')
|
raise FieldValidatorException(message=self.message if self.message else f'{self.field_name}不能为空')
|
||||||
@@ -202,7 +203,7 @@ class Pattern:
|
|||||||
@wraps(func)
|
@wraps(func)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
validate_model = args[0]
|
validate_model = args[0]
|
||||||
if isinstance(validate_model, BaseModel):
|
if isinstance(validate_model, BaseModel) and hasattr(validate_model, self.field_name):
|
||||||
field_value = getattr(validate_model, self.field_name)
|
field_value = getattr(validate_model, self.field_name)
|
||||||
if isinstance(field_value, str) and not re.match(self.regexp, field_value):
|
if isinstance(field_value, str) and not re.match(self.regexp, field_value):
|
||||||
raise FieldValidatorException(message=self.message if self.message else f'{self.field_name}格式不正确')
|
raise FieldValidatorException(message=self.message if self.message else f'{self.field_name}格式不正确')
|
||||||
@@ -242,7 +243,7 @@ class Size:
|
|||||||
@wraps(func)
|
@wraps(func)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
validate_model = args[0]
|
validate_model = args[0]
|
||||||
if isinstance(validate_model, BaseModel):
|
if isinstance(validate_model, BaseModel) and hasattr(validate_model, self.field_name):
|
||||||
field_value = getattr(validate_model, self.field_name)
|
field_value = getattr(validate_model, self.field_name)
|
||||||
if isinstance(field_value, float):
|
if isinstance(field_value, float):
|
||||||
if self.gt is not None and field_value <= self.gt:
|
if self.gt is not None and field_value <= self.gt:
|
||||||
@@ -282,7 +283,7 @@ class Xss:
|
|||||||
@wraps(func)
|
@wraps(func)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
validate_model = args[0]
|
validate_model = args[0]
|
||||||
if isinstance(validate_model, BaseModel):
|
if isinstance(validate_model, BaseModel) and hasattr(validate_model, self.field_name):
|
||||||
field_value = getattr(validate_model, self.field_name)
|
field_value = getattr(validate_model, self.field_name)
|
||||||
if not StringUtil.is_blank(field_value):
|
if not StringUtil.is_blank(field_value):
|
||||||
pattern = re.compile(self.HTML_PATTERN)
|
pattern = re.compile(self.HTML_PATTERN)
|
||||||
|
Reference in New Issue
Block a user