Spaces:
Runtime error
Runtime error
| 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): | |
| 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 |