更新:models/routes/services/templates/docs
This commit is contained in:
+26
-3
@@ -3,7 +3,7 @@
|
||||
from flask import request, jsonify, render_template, session
|
||||
from datetime import datetime, timedelta
|
||||
from app.routes import main_bp
|
||||
from app.models import db, Class, Student, StudentGoal, Goal
|
||||
from app.models import db, Class, Student, StudentGoal, Goal, User
|
||||
from app.routes.auth import login_required_json, admin_required
|
||||
import logging
|
||||
|
||||
@@ -17,12 +17,21 @@ def classes_page():
|
||||
return render_template("classes.html", active_nav="classes")
|
||||
|
||||
|
||||
@main_bp.route("/api/teachers", methods=["GET"])
|
||||
@login_required_json
|
||||
def api_teachers_list():
|
||||
"""用户列表(用于班主任选择,所有登录用户可访问)"""
|
||||
users = User.query.order_by(User.name, User.username).all()
|
||||
return jsonify([{"id": u.id, "name": u.name or u.username} for u in users])
|
||||
|
||||
|
||||
@main_bp.route("/api/classes", methods=["GET"])
|
||||
@login_required_json
|
||||
def api_classes_list():
|
||||
"""班级列表"""
|
||||
# 支持筛选参数: active=true, active=false, 不传则返回全部
|
||||
# 支持筛选参数: active=true/false, mine=true/false
|
||||
active_filter = request.args.get("active")
|
||||
mine_filter = request.args.get("mine")
|
||||
|
||||
query = Class.query
|
||||
if active_filter is not None:
|
||||
@@ -31,6 +40,12 @@ def api_classes_list():
|
||||
elif active_filter.lower() == "false":
|
||||
query = query.filter(Class.active == False)
|
||||
|
||||
# 我的班级筛选(当前用户作为老师的班级)
|
||||
if mine_filter and mine_filter.lower() == "true":
|
||||
user_id = session.get("user_id")
|
||||
if user_id:
|
||||
query = query.filter(Class.teacher_id == user_id)
|
||||
|
||||
classes = query.order_by(Class.created_at.desc()).all()
|
||||
return jsonify([c.to_dict() for c in classes])
|
||||
|
||||
@@ -42,6 +57,8 @@ def api_classes_create():
|
||||
data = request.get_json()
|
||||
name = data.get("name", "").strip()
|
||||
description = data.get("description", "")
|
||||
teacher_id = data.get("teacher_id") # 可以为空
|
||||
level = data.get("level", "启蒙")
|
||||
active = data.get("active", True) # 默认进行中
|
||||
|
||||
if not name:
|
||||
@@ -51,7 +68,7 @@ def api_classes_create():
|
||||
return jsonify({"error": "班级名称已存在", "code": "DUPLICATE_NAME"}), 400
|
||||
|
||||
try:
|
||||
cls = Class(name=name, description=description, active=active)
|
||||
cls = Class(name=name, description=description, teacher_id=teacher_id, level=level, active=active)
|
||||
db.session.add(cls)
|
||||
db.session.commit()
|
||||
return jsonify(cls.to_dict())
|
||||
@@ -78,6 +95,12 @@ def api_classes_update(class_id):
|
||||
if "description" in data:
|
||||
cls.description = data["description"]
|
||||
|
||||
if "teacher_id" in data:
|
||||
cls.teacher_id = data["teacher_id"] if data["teacher_id"] else None
|
||||
|
||||
if "level" in data:
|
||||
cls.level = data["level"]
|
||||
|
||||
if "active" in data:
|
||||
cls.active = data["active"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user