2022-04-06 04:30:30 +08:00
|
|
|
import re
|
|
|
|
|
|
|
|
from Utils.ErrorUtil import ReturnConditionCheckFailed
|
|
|
|
|
|
|
|
|
|
|
|
class Validate(object):
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def email(param):
|
|
|
|
""""""
|
|
|
|
regex = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$"
|
|
|
|
case = (len(param) > 7) and (re.match(regex, param) is not None)
|
|
|
|
result = True if case else False
|
|
|
|
return result
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def password(param):
|
|
|
|
""""""
|
|
|
|
regex = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8,}$"
|
|
|
|
case = (len(param) >= 8) and (re.match(regex, param) is not None)
|
|
|
|
return True if case else False
|
|
|
|
|
2022-04-07 11:19:29 +08:00
|
|
|
@staticmethod
|
|
|
|
def image(param):
|
|
|
|
""""""
|
|
|
|
mimetype = param.mimetype
|
|
|
|
return True if mimetype in ['image/jpeg', 'image/png'] else False
|
|
|
|
|
2022-04-06 04:30:30 +08:00
|
|
|
|
|
|
|
class ValidateAttr(object):
|
2022-04-11 10:42:46 +08:00
|
|
|
|
2022-04-06 04:30:30 +08:00
|
|
|
def __init__(self, **kwargs):
|
|
|
|
""""""
|
|
|
|
self.kwargs = kwargs
|
2022-04-11 15:51:42 +08:00
|
|
|
self.error_info = kwargs['error_info'] if 'error_info' in kwargs else ('{}异常'.format(kwargs['mark']) if 'mark' in kwargs else None)
|
2022-04-07 17:09:32 +08:00
|
|
|
self.error_code = kwargs['error_code'] if 'error_code' in kwargs else 200
|
2022-04-06 04:30:30 +08:00
|
|
|
|
|
|
|
def __get__(self, instance, owner):
|
|
|
|
if self.kwargs['field'] in instance.__dict__:
|
|
|
|
return instance.__dict__[self.kwargs['field']]
|
|
|
|
|
|
|
|
def __set__(self, instance, value):
|
|
|
|
""""""
|
2022-04-11 15:51:42 +08:00
|
|
|
try:
|
|
|
|
self.error_info = '{}异常'.format(instance.fields_map[self.kwargs['field']])
|
|
|
|
except AttributeError:
|
|
|
|
pass
|
2022-04-06 04:30:30 +08:00
|
|
|
|
2022-04-06 15:15:44 +08:00
|
|
|
def not_default():
|
2022-04-11 11:19:35 +08:00
|
|
|
"""无默认值时属性设值检查"""
|
2022-04-06 15:15:44 +08:00
|
|
|
|
|
|
|
if 'type' in self.kwargs:
|
2022-04-11 15:51:42 +08:00
|
|
|
"""检查实例的属性类型"""
|
2022-04-06 15:15:44 +08:00
|
|
|
if not isinstance(value, self.kwargs['type']):
|
2022-04-07 17:09:32 +08:00
|
|
|
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
2022-04-06 04:30:30 +08:00
|
|
|
|
2022-04-06 15:15:44 +08:00
|
|
|
if 'length' in self.kwargs:
|
2022-04-11 15:51:42 +08:00
|
|
|
"""检查实例的属性值长度(一般是str类型)"""
|
2022-04-06 15:15:44 +08:00
|
|
|
if len(value) != self.kwargs['length']:
|
2022-04-07 17:09:32 +08:00
|
|
|
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
2022-04-06 04:30:30 +08:00
|
|
|
|
2022-04-06 15:15:44 +08:00
|
|
|
if 'in_list' in self.kwargs:
|
2022-04-11 15:51:42 +08:00
|
|
|
"""检查实例属性是否包含于列表中(属性有列表和非列表两种情况)"""
|
2022-04-06 15:15:44 +08:00
|
|
|
if type(value) is not list:
|
|
|
|
if value not in self.kwargs['in_list']:
|
2022-04-07 17:09:32 +08:00
|
|
|
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
2022-04-06 15:15:44 +08:00
|
|
|
else:
|
|
|
|
for item in value:
|
|
|
|
if item not in self.kwargs['in_list']:
|
2022-04-07 17:09:32 +08:00
|
|
|
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
2022-04-06 15:15:44 +08:00
|
|
|
|
|
|
|
if 'instance_list' in self.kwargs:
|
2022-04-11 15:51:42 +08:00
|
|
|
"""检查实例列表"""
|
2022-04-06 15:15:44 +08:00
|
|
|
if type(value) is not list:
|
2022-04-07 17:09:32 +08:00
|
|
|
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
2022-04-06 15:15:44 +08:00
|
|
|
else:
|
|
|
|
for item in value:
|
|
|
|
if not isinstance(item, self.kwargs['instance_list']):
|
2022-04-07 17:09:32 +08:00
|
|
|
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
2022-04-06 15:15:44 +08:00
|
|
|
|
|
|
|
if 'func' in self.kwargs:
|
2022-04-11 11:19:35 +08:00
|
|
|
"""属性检查函数"""
|
2022-04-06 15:15:44 +08:00
|
|
|
if not list(map(self.kwargs['func'], [value]))[0]:
|
2022-04-07 17:09:32 +08:00
|
|
|
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
2022-04-06 04:30:30 +08:00
|
|
|
|
2022-04-06 15:15:44 +08:00
|
|
|
instance.__dict__[self.kwargs['field']] = value
|
|
|
|
|
|
|
|
if 'default' in self.kwargs:
|
2022-04-11 15:51:42 +08:00
|
|
|
"""实例属性默认值"""
|
2022-04-06 15:15:44 +08:00
|
|
|
if value is None:
|
|
|
|
value = self.kwargs['default']
|
|
|
|
instance.__dict__[self.kwargs['field']] = value
|
|
|
|
else:
|
|
|
|
not_default()
|
|
|
|
else:
|
|
|
|
not_default()
|