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 class ValidateAttr(object): def __init__(self, **kwargs): """""" self.kwargs = kwargs 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.kwargs['error_info'], self.kwargs['error_code']) if 'length' in self.kwargs: """检查实例的属性值长度(一般是str类型)""" if len(value) != self.kwargs['length']: raise ReturnConditionCheckFailed(self.kwargs['error_info'], self.kwargs['error_code']) if 'in_list' in self.kwargs: """检查实例属性是否包含于列表中(属性有列表和非列表两种情况)""" if type(value) is not list: if value not in self.kwargs['in_list']: raise ReturnConditionCheckFailed(self.kwargs['error_info'], self.kwargs['error_code']) else: for item in value: if item not in self.kwargs['in_list']: raise ReturnConditionCheckFailed(self.kwargs['error_info'], self.kwargs['error_code']) if 'instance_list' in self.kwargs: """检查实例列表""" if type(value) is not list: raise ReturnConditionCheckFailed(self.kwargs['error_info'], self.kwargs['error_code']) else: for item in value: if not isinstance(item, self.kwargs['instance_list']): raise ReturnConditionCheckFailed(self.kwargs['error_info'], self.kwargs['error_code']) if 'func' in self.kwargs: """属性检查函数""" if not list(map(self.kwargs['func'], [value]))[0]: raise ReturnConditionCheckFailed(self.kwargs['error_info'], self.kwargs['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()