Esempio n. 1
0
 def check_int(cls, name, value, condition):
     '''
     '''
     if not isinstance(value, int) and (isinstance(value, str) and not value.isdigit()):
         raise errors.InvalidArgsError('{}需要整数参数'.format(name))
     value = int(value)
     if len(condition) == 0:
         return value
     elif len(condition) == 1:
         max_value = condition[0]
         if value > max_value:
             raise errors.InvalidArgsError('{}最大值不超过{}'.format(name, max_value))
     else:
         min_value, max_value, *_ = condition
         if not (min_value <= value <= max_value):
             raise errors.InvalidArgsError('{}值应在{}~{}之间'.format(name, min_value, max_value))
     return value
Esempio n. 2
0
 def check_int(self, name, value, condition):
     '''
     '''
     if not isinstance(value, int):
         raise errors.InvalidArgsError('{}需要整数参数'.format(name))
     if len(condition) == 0:
         return
     elif len(condition) == 1:
         max_value = condition[0]
         if value > max_value:
             raise errors.InvalidArgsError('{}最大值不超过{}'.format(
                 name, max_value))
     else:
         min_value, max_value, *_ = condition
         if not (min_value <= value <= max_value):
             raise errors.InvalidArgsError('{}值应在{}~{}之间'.format(
                 name, min_value, max_value))
Esempio n. 3
0
 def check_date(cls, name, value, condition):
     '''
     检查日期格式
     '''
     try:
         value = time_utils.str2date(value)
     except ValueError as e:
         raise errors.InvalidArgsError(f'{name}格式不正确(yyyy-mm-dd)')
     return value
Esempio n. 4
0
 def check_datetime(cls, name, value, condition):
     '''
     检查日期格式
     '''
     try:
         value = time_utils.str2datetime_by_format(value)
     except ValueError as e:
         raise errors.InvalidArgsError('{}格式不正确(yyyy-mm-dd HH:MM:SS)'.format(name))
     return value
Esempio n. 5
0
 def check_int(cls, name, value, condition):
     '''
     '''
     if not isinstance(value, int) and (isinstance(value, str)
                                        and not value.isdigit()):
         raise errors.InvalidArgsError(f'{name}需要整数参数')
     value = int(value)
     if len(condition) == 0:
         return value
     elif len(condition) == 1:
         max_value = condition[0]
         if value > max_value:
             raise errors.InvalidArgsError(f'{name}最大值不超过{max_value}')
     else:
         min_value, max_value, *_ = condition
         if not (min_value <= value <= max_value):
             raise errors.InvalidArgsError(
                 f'{name}值应在{min_value}~{max_value}之间')
     return value
Esempio n. 6
0
 def check_required(cls, name, value, condition):
     '''
     必填项校验
     '''
     if value is None or value == '':
         raise errors.InvalidArgsError(f'{name}为必填项')
     if len(condition) == 0:
         return value
     method, *condition = condition
     method = f'check_{method}'
     return getattr(cls, method)(name, value, condition)
Esempio n. 7
0
 def check_str(self, name, value, condition):
     '''
     '''
     if not isinstance(value, str):
         raise errors.InvalidArgsError('{}需要字符串参数'.format(name))
     length = len(value)
     if len(condition) == 0:
         return
     elif len(condition) == 1:
         max_length = int(condition[0])
         if length > max_length:
             raise errors.InvalidArgsError('{}长度不能大于{}'.format(
                 name, max_length))
     else:
         min_length, max_length, *_ = condition
         min_length = int(min_length)
         max_length = int(max_length)
         if not (min_length <= length <= max_length):
             raise errors.InvalidArgsError('{}长度应在{}~{}个字符之间'.format(
                 name, min_length, max_length))
Esempio n. 8
0
 def check_required(self, name, value, condition):
     '''
     必填项校验
     '''
     if value is None or value == '':
         raise errors.InvalidArgsError('{}为必填项'.format(name))
     if len(condition) == 0:
         return
     method, *condition = condition
     method = 'check_{}'.format(method)
     getattr(self, method)(name, value, condition)
Esempio n. 9
0
 def check_str(cls, name, value, condition):
     '''
     '''
     if not isinstance(value, str):
         raise errors.InvalidArgsError(f'{name}需要字符串参数')
     value = value.strip()
     length = len(value)
     if len(condition) == 0:
         return value
     elif len(condition) == 1:
         max_length = int(condition[0])
         if length > max_length:
             raise errors.InvalidArgsError(f'{name}长度不能大于{max_length}')
     else:
         min_length, max_length, *_ = condition
         min_length = int(min_length)
         max_length = int(max_length)
         if not (min_length <= length <= max_length):
             raise errors.InvalidArgsError(
                 f'{name}长度应在{min_length}~{max_length}个字符之间')
     return value
Esempio n. 10
0
 def register(
     cls,
     username,
     password,
     is_active=True,
 ):
     try:
         passhash = bcrypt.hashpw(password.encode('utf-8'),
                                  bcrypt.gensalt())
         user = cls(username=username, password=passhash, active=is_active)
         db.session.add(user)
         db.session.commit()
     except IntegrityError as e:
         db.session.rollback()
         raise errors.InvalidArgsError("该登录账号已存在")
     except Exception as e:
         db.session.rollback()
         current_app.logger.error(f"添加用户失败: {e}")
         raise errors.DBError()
     return user
Esempio n. 11
0
 def check_list(cls, name, value, condition):
     if not isinstance(value, list):
         raise errors.InvalidArgsError(f'{name}需要列表')
     return value
Esempio n. 12
0
 def check_dict(cls, name, value, condition):
     if not isinstance(value, dict):
         raise errors.InvalidArgsError(f'{name}需要字典类型')
     return value
Esempio n. 13
0
 def check_bool(cls, name, value, condition):
     if value not in (True, False):
         raise errors.InvalidArgsError(f'{name}需要bool值')
     return value
Esempio n. 14
0
 def check_list(self, name, value, condition):
     if not isinstance(value, list):
         raise errors.InvalidArgsError('{}需要列表'.format(name))
Esempio n. 15
0
 def check_dict(cls, name, value, condition):
     if not isinstance(value, dict):
         raise errors.InvalidArgsError('{}需要字典类型'.format(name))
     return value
Esempio n. 16
0
 def check_bool(cls, name, value, condition):
     if value not in (True, False):
         raise errors.InvalidArgsError('{}需要bool值'.format(name))
     return value