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