Version 0.1.1 rise to flask app factory
This commit is contained in:
60
Html/apps/views/dashboard.py
Normal file
60
Html/apps/views/dashboard.py
Normal file
@@ -0,0 +1,60 @@
|
||||
# myapp/views/dashboard.py
|
||||
import json
|
||||
from flask import Blueprint, render_template, request, jsonify, redirect, url_for
|
||||
from ..auth.decorators import require_role
|
||||
from ..services.user_service import get_or_load_current_user, add_course_for_current_user
|
||||
from ..services.course_service import load_course, user_selected_course_briefs
|
||||
|
||||
bp = Blueprint("main", __name__) # 根路径蓝图
|
||||
|
||||
@bp.get("/dashboard")
|
||||
@require_role
|
||||
def dashboard():
|
||||
user_obj = get_or_load_current_user()
|
||||
if user_obj is None:
|
||||
return redirect(url_for("auth.login"))
|
||||
|
||||
user_course_data = user_selected_course_briefs(user_obj)
|
||||
return render_template(
|
||||
"dashboard.html",
|
||||
user_data=user_obj.to_json_without_dialog(),
|
||||
user_course_data=json.dumps(user_course_data, ensure_ascii=False),
|
||||
)
|
||||
|
||||
@bp.get("/course/<course_id>")
|
||||
@require_role
|
||||
def course(course_id):
|
||||
c = load_course(course_id)
|
||||
return render_template("course.html", course_id=course_id, course_data=c)
|
||||
|
||||
@bp.post("/select_course")
|
||||
@require_role
|
||||
def select_course():
|
||||
data = request.get_json(force=True) or {}
|
||||
course_id = data.get("course_id")
|
||||
if not course_id:
|
||||
return jsonify({"success": False, "message": "缺少 course_id"}), 400
|
||||
|
||||
course_data = load_course(course_id)
|
||||
ok = add_course_for_current_user(course_id, course_data)
|
||||
if not ok:
|
||||
return jsonify({"success": False, "message": "未登录或会话失效"}), 401
|
||||
return jsonify({"success": True, "message": "课程选择成功"})
|
||||
|
||||
@bp.get("/")
|
||||
@require_role
|
||||
def home_index():
|
||||
user_obj = get_or_load_current_user()
|
||||
if user_obj is None:
|
||||
return redirect(url_for("auth.login"))
|
||||
|
||||
selected_courses = list(getattr(user_obj, "select_course", []))
|
||||
# 课程目录:依据你的 CourseList 暴露的接口进行传递(这里直接传对象,模板里用)
|
||||
from flask import current_app
|
||||
course_list = current_app.extensions["course_list"]
|
||||
|
||||
return render_template(
|
||||
"index.html",
|
||||
courses_data=course_list,
|
||||
selected_courses=selected_courses
|
||||
)
|
||||
Reference in New Issue
Block a user