add:教师端新增删除课程,增加并更换footer-brief模板
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from flask import Blueprint, request, jsonify, current_app, session, render_template, session
|
||||
from bson import ObjectId
|
||||
from ..services.course_service import create_material, update_material, get_materials_by_teacher, load_material, get_materials_by_teacher_dict, add_material_chapter, add_material_chapter_lesson, delete_material_chapter_lesson, reorder_material_structure, rename_material_structure
|
||||
from ..auth.decorators import require_role
|
||||
from ..services.cos_service import upload_file
|
||||
@@ -37,24 +38,60 @@ def create_new_material():
|
||||
material_id = create_material(teacher_id, material_name, description, chapters, image_url)
|
||||
return jsonify({"message": "教材创建成功", "material_id": material_id}), 201
|
||||
|
||||
@bp.route('/materials/<material_id>', methods=['GET'])
|
||||
@bp.route('/materials/<material_id>', methods=['GET', 'PUT', 'DELETE'])
|
||||
@require_role(roles="teacher")
|
||||
def get_material(material_id):
|
||||
if material_id is None:
|
||||
return jsonify({"message": "教材名称不能为空"}), 400
|
||||
material = load_material(material_id)
|
||||
print(material)
|
||||
return jsonify( material.model_dump()), 200
|
||||
def handle_material(material_id):
|
||||
|
||||
|
||||
@bp.route('/materials/<material_id>', methods=['PUT'])
|
||||
@require_role(roles="teacher")
|
||||
def update_existing_material(material_id):
|
||||
data = request.get_json()
|
||||
chapters = data.get('chapters')
|
||||
if update_material(material_id, chapters):
|
||||
return jsonify({"message": "教材更新成功"}), 200
|
||||
return jsonify({"message": "教材未找到"}), 404
|
||||
if request.method == 'GET':
|
||||
if material_id is None:
|
||||
return jsonify({"message": "教材名称不能为空"}), 400
|
||||
material = load_material(material_id)
|
||||
print(material)
|
||||
return jsonify(material.model_dump()), 200
|
||||
|
||||
elif request.method == 'PUT':
|
||||
data = request.get_json()
|
||||
chapters = data.get('chapters')
|
||||
if update_material(material_id, chapters):
|
||||
return jsonify({"message": "教材更新成功"}), 200
|
||||
else:
|
||||
return jsonify({"message": "教材更新失败"}), 500
|
||||
|
||||
elif request.method == 'DELETE':
|
||||
# 获取当前教师信息
|
||||
teacher_uuid = session.get("user_uuid")
|
||||
teacher_id = current_app.extensions["uuid2username"][teacher_uuid]
|
||||
|
||||
# 检查材料是否存在,并且是否为当前教师创建
|
||||
mongo = current_app.extensions["mongo"]
|
||||
print(f"尝试删除课程ID: {material_id}, 当前教师ID: {teacher_id}")
|
||||
try:
|
||||
material = mongo.db.materials.find_one({'_id': ObjectId(material_id)})
|
||||
print(f"找到的材料: {material}")
|
||||
|
||||
if not material:
|
||||
return jsonify({"message": "课程不存在", "success": False}), 404
|
||||
|
||||
# 验证是否为当前教师创建的课程
|
||||
if material.get('teacher_id') != teacher_id:
|
||||
return jsonify({"message": "权限不足,无法删除他人课程", "success": False}), 403
|
||||
|
||||
except Exception as e:
|
||||
print(f"查询材料时出错: {e}")
|
||||
return jsonify({"message": f"查询课程时出错: {str(e)}", "success": False}), 500
|
||||
|
||||
# 执行删除操作
|
||||
try:
|
||||
result = mongo.db.materials.delete_one({'_id': ObjectId(material_id), 'teacher_id': teacher_id})
|
||||
print(f"删除操作结果: {result.deleted_count}")
|
||||
except Exception as e:
|
||||
print(f"删除材料时出错: {e}")
|
||||
return jsonify({"message": f"删除课程时出错: {str(e)}", "success": False}), 500
|
||||
|
||||
if result.deleted_count > 0:
|
||||
return jsonify({"message": "课程删除成功", "success": True}), 200
|
||||
else:
|
||||
return jsonify({"message": "删除失败", "success": False}), 500
|
||||
|
||||
@bp.route('/materials/addchapter/<material_id>', methods=['POST'])
|
||||
@require_role(roles="teacher")
|
||||
|
||||
Reference in New Issue
Block a user