Download app/utils/validators.py from gitdeem/dt: direct link, hf CLI and curl.
- Browser
- Download file 2.9 kB
-
https://huggingface.co/spaces/gitdeem/dt/resolve/main/app/utils/validators.py
- Command line
-
hf download hf://spaces/gitdeem/dt/app/utils/validators.py
-
curl -L -o validators.py https://huggingface.co/spaces/gitdeem/dt/resolve/main/app/utils/validators.py
2.9 kB
| # utils/validators.py | |
| from datetime import datetime, timedelta | |
| from app.models import SendCode | |
| def validate_verification_code(email: str, code: str, code_type: int): | |
| """验证验证码有效性[^1]""" | |
| expire_time = datetime.utcnow() - timedelta(minutes=10) | |
| send_code = SendCode.query.filter( | |
| SendCode.send_to == email, | |
| SendCode.code == code, | |
| SendCode.send_type == code_type, | |
| SendCode.created_at > expire_time | |
| ).order_by(SendCode.created_at.desc()).first() | |
| if not send_code: | |
| return False, '验证码已过期或无效' | |
| return True, None | |
| def validate_password_confirmation(data: dict): | |
| """验证密码一致性[^2]""" | |
| if data['password'] != data.get('password_confirmation'): | |
| return False, '两次密码不一致' | |
| return True, None | |
| # utils/validators.py 新增方法 | |
| def validate_password_complexity(password: str): | |
| """密码复杂度验证[^5]""" | |
| if len(password) < 6: | |
| return False, "密码至少需要6位" | |
| if not any(c.isalpha() for c in password) or not any(c.isdigit() for c in password): | |
| return False, "密码需包含字母和数字" | |
| return True, None | |
| # utils/validators.py | |
| from flask import request | |
| from app.utils.response import APIResponse | |
| def validate_pagination_params(req): | |
| """验证并获取分页参数[^1] | |
| 返回: | |
| tuple: (page, limit) | |
| """ | |
| try: | |
| page = int(req.args.get('page', 1)) | |
| limit = int(req.args.get('limit', 20)) | |
| if page < 1: | |
| raise ValueError('页码必须大于0') | |
| if limit < 1 or limit > 100: | |
| raise ValueError('每页数量必须在1到100之间') | |
| return page, limit | |
| except ValueError as e: | |
| raise APIResponse.error(str(e), 400) | |
| def validate_date_range(start_date, end_date): | |
| """验证日期范围参数[^2] | |
| 参数: | |
| start_date (str): 起始日期 | |
| end_date (str): 结束日期 | |
| 返回: | |
| tuple: (start_date, end_date) 转换后的datetime对象 | |
| """ | |
| try: | |
| start = datetime.fromisoformat(start_date) if start_date else None | |
| end = datetime.fromisoformat(end_date) if end_date else None | |
| if start and end and start > end: | |
| raise ValueError('起始日期不能晚于结束日期') | |
| return start, end | |
| except ValueError as e: | |
| raise APIResponse.error('日期格式错误', 400) | |
| def validate_id_list(ids): | |
| """验证ID列表参数[^3] | |
| 参数: | |
| ids (list): ID列表 | |
| 返回: | |
| list: 验证后的ID列表 | |
| """ | |
| if not ids or not isinstance(ids, list): | |
| raise APIResponse.error('参数错误', 400) | |
| try: | |
| return [int(id) for id in ids] | |
| except ValueError: | |
| raise APIResponse.error('ID格式错误', 400) | |