95 lines
3.6 KiB
Python
95 lines
3.6 KiB
Python
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
|
||
|
||
@staticmethod
|
||
def image(param):
|
||
""""""
|
||
mimetype = param.mimetype
|
||
return True if mimetype in ['image/jpeg', 'image/png'] else False
|
||
|
||
|
||
class ValidateAttr(object):
|
||
|
||
def __init__(self, **kwargs):
|
||
""""""
|
||
self.kwargs = kwargs
|
||
self.error_info = kwargs['error_info'] if 'error_info' in kwargs else (
|
||
'{}异常'.format(kwargs['mark']) if 'mark' in kwargs else ('{}异常'.format(
|
||
self.__dict__['fields_map'][self.kwargs['field']]) if 'fields_map' in self.__dict__ else None))
|
||
self.error_code = kwargs['error_code'] if 'error_code' in kwargs else 200
|
||
|
||
def __get__(self, instance, owner):
|
||
if self.kwargs['field'] in instance.__dict__:
|
||
return instance.__dict__[self.kwargs['field']]
|
||
|
||
def __set__(self, instance, value):
|
||
""""""
|
||
|
||
def not_default():
|
||
"""æ— é»˜è®¤å€¼æ—¶å±žæ€§è®¾å€¼æ£€æŸ""
|
||
|
||
if 'type' in self.kwargs:
|
||
"""检查实例的属性类åž""
|
||
if not isinstance(value, self.kwargs['type']):
|
||
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
||
|
||
if 'length' in self.kwargs:
|
||
"""检查实例的属性值长åºä¸€èˆ¬æ˜¯str类型)"""
|
||
if len(value) != self.kwargs['length']:
|
||
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
||
|
||
if 'in_list' in self.kwargs:
|
||
"""检查实例属性是å<EFBFBD>¦åŒ…å<EFBFBD>«äºŽåˆ—表ä¸å±žæ€§æœ‰åˆ—表和é<EFBFBD>žåˆ—表两ç§<EFBFBD>情况)"""
|
||
if type(value) is not list:
|
||
if value not in self.kwargs['in_list']:
|
||
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
||
else:
|
||
for item in value:
|
||
if item not in self.kwargs['in_list']:
|
||
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
||
|
||
if 'instance_list' in self.kwargs:
|
||
"""检查实例列è¡""
|
||
if type(value) is not list:
|
||
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
||
else:
|
||
for item in value:
|
||
if not isinstance(item, self.kwargs['instance_list']):
|
||
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
||
|
||
if 'func' in self.kwargs:
|
||
"""属性检查函æ•""
|
||
if not list(map(self.kwargs['func'], [value]))[0]:
|
||
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
||
|
||
instance.__dict__[self.kwargs['field']] = value
|
||
|
||
if 'default' in self.kwargs:
|
||
"""实例属性默认å€""
|
||
if value is None:
|
||
value = self.kwargs['default']
|
||
instance.__dict__[self.kwargs['field']] = value
|
||
else:
|
||
not_default()
|
||
else:
|
||
not_default()
|