stock-backend / app /utils /validators.py
fromozuzhouzzz
Initial commit
fed8648
Raw
History Blame Contribute Delete
1.33 kB
from functools import wraps
from flask import jsonify, request
from decimal import Decimal, ROUND_HALF_UP, InvalidOperation, DecimalException
from datetime import datetime
def validate_json(*required_fields):
def decorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if not request.is_json:
return jsonify({'message': 'Missing JSON in request'}), 400
data = request.get_json()
missing_fields = [field for field in required_fields if field not in data]
if missing_fields:
return jsonify({
'message': f'Missing required fields: {", ".join(missing_fields)}'
}), 400
return f(*args, **kwargs)
return decorated_function
return decorator
def validate_decimal(value):
"""验证并转换decimal类型的值"""
try:
if value is None:
return None
# 转换为Decimal并保留2位小数
return Decimal(str(value)).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
except (TypeError, InvalidOperation, DecimalException):
return None
def validate_date(date_str):
try:
return datetime.strptime(date_str, '%Y-%m-%d').date()
except:
return None