教师教材编辑页面
This commit is contained in:
41
Html/apps/views/lessons.py
Normal file
41
Html/apps/views/lessons.py
Normal file
@@ -0,0 +1,41 @@
|
||||
# views/lesson.py
|
||||
from flask import Blueprint, jsonify, request, render_template, session, current_app
|
||||
from bson import ObjectId
|
||||
from datetime import datetime
|
||||
from ..auth.decorators import require_role
|
||||
from ..services.course_service import load_material
|
||||
|
||||
bp = Blueprint('lesson', __name__)
|
||||
|
||||
# 返回课时元信息(含三份 markdown 的可访问链接或直接内容)
|
||||
@bp.route('/api/materials/<material_id>/chapters/<chapter_name>/lessons/<lesson_name>', methods=['GET'])
|
||||
@require_role(roles="teacher")
|
||||
def edit_lesson_detail(material_id, chapter_name, lesson_name):
|
||||
teacher_uuid = session.get("user_uuid")
|
||||
teacher_id = current_app.extensions["uuid2username"][teacher_uuid]
|
||||
material = load_material(material_id)
|
||||
for chapter in material.chapters:
|
||||
if chapter.chapter_name == chapter_name:
|
||||
for lesson in chapter.lessons:
|
||||
if lesson.lesson_name == lesson_name:
|
||||
return render_template('lesson.html', lesson=lesson.model_dump(), role="teacher", material=material.model_dump())
|
||||
return jsonify({"message": "课时不存在"}), 404
|
||||
|
||||
# 返回某份 markdown 文件内容(你也可以直接返回 S3/OSS 的直链)
|
||||
@bp.route('/api/lesson_file/<material_id>/<chapter_name>/<lesson_name>/<filename>', methods=['GET'])
|
||||
def get_markdown_file(material_id, chapter_name, lesson_name, filename):
|
||||
# TODO: 真实环境从存储读取
|
||||
demo_map = {
|
||||
"lesson.md": "# 主题\n## 阶段一\n### 步骤A\n内容A...\n### 步骤B\n内容B...\n",
|
||||
"prompt.md": "# 主题\n## 阶段一\n### 步骤A\n提示A...\n### 步骤B\n提示B...\n",
|
||||
"score_prompt.md": "# 主题\n## 阶段一\n### 步骤A\n评分A...\n### 步骤B\n评分B...\n"
|
||||
}
|
||||
return demo_map.get(filename, ""), 200
|
||||
|
||||
# 保存(更新)某一份 markdown(前端会把编辑后的文本整体传回)
|
||||
@bp.route('/api/lesson_file/<material_id>/<chapter_name>/<lesson_name>/<filename>', methods=['PUT'])
|
||||
def save_markdown_file(material_id, chapter_name, lesson_name, filename):
|
||||
text = request.get_data(as_text=True)
|
||||
# TODO: 写入存储,并做版本/审计
|
||||
# 返回更新时间等
|
||||
return jsonify({"saved": True, "updated_at": datetime.utcnow().isoformat()}), 200
|
||||
Reference in New Issue
Block a user