chore: add upload log
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
from flask import Flask, request, send_from_directory, abort, jsonify
|
||||
from logging.handlers import RotatingFileHandler
|
||||
from sort_rule import sort_by_rule
|
||||
import csv
|
||||
import datetime
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
|
||||
@@ -15,6 +17,17 @@ project_deadlines = {
|
||||
UPLOAD_FOLDER = "./uploads"
|
||||
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
|
||||
|
||||
# 配置日志记录器
|
||||
handler = RotatingFileHandler("score_upload.log", maxBytes=1_000_000, backupCount=5)
|
||||
handler.setLevel(logging.INFO) # 设置日志级别
|
||||
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") # 日志格式
|
||||
handler.setFormatter(formatter)
|
||||
|
||||
# 添加处理器到日志记录器
|
||||
logger = logging.getLogger()
|
||||
logger.setLevel(logging.INFO)
|
||||
logger.addHandler(handler)
|
||||
|
||||
# @app.route("/upload", methods=["POST"])
|
||||
# def upload_file():
|
||||
# if "file" not in request.files:
|
||||
@@ -106,6 +119,7 @@ def is_past_deadline(project):
|
||||
def upload_score():
|
||||
try:
|
||||
data = request.json
|
||||
logging.info(f"Received data: {data}")
|
||||
if (
|
||||
"name" in data
|
||||
and "id" in data
|
||||
@@ -113,9 +127,10 @@ def upload_score():
|
||||
and "details" in data
|
||||
and "running_time" in data
|
||||
and "time" in data
|
||||
and "project" in data # 新增项目名称字段
|
||||
and "project" in data
|
||||
):
|
||||
if not re.fullmatch(r"^\d{12}$", data["id"]):
|
||||
logging.warning(f"Invalid ID format: {data["id"]}, RAW data: {data}")
|
||||
return jsonify({"message": "学号不合规,不记录成绩!"}), 400
|
||||
elif (
|
||||
data["name"] == "test_name"
|
||||
@@ -123,18 +138,25 @@ def upload_score():
|
||||
or data["name"] == "name"
|
||||
or data["name"] == ""
|
||||
):
|
||||
logging.warning(f"Invalid name: {data["name"]}, RAW data: {data}")
|
||||
return jsonify({"message": "姓名不合规,不记录成绩!"}), 400
|
||||
|
||||
# 检查截止时间
|
||||
if is_past_deadline(data["project"]):
|
||||
logging.warning(
|
||||
f"Past deadline for project: {data["project"]}, RAW data: {data}"
|
||||
)
|
||||
return jsonify({"message": "已过成绩提交截止时间,上传成绩失败!"}), 403
|
||||
|
||||
data["details"] = data["details"].replace("\n", "<br>")
|
||||
write_to_csv(data, data["project"])
|
||||
logging.info(f"Score uploaded successfully for ID: {data["id"]}")
|
||||
return jsonify({"message": "上传成绩成功!"}), 200
|
||||
else:
|
||||
logging.error(f"Data format error: {data}")
|
||||
return jsonify({"message": "数据格式错误!"}), 400
|
||||
except Exception as e:
|
||||
logging.error("Exception occurred: %s", str(e), exc_info=True)
|
||||
return jsonify({"message": f"错误 {str(e)}"}), 500
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user