学生选课系统 - 教师管理功能
from common.flask_helper import *
from common.message import Message
from model.course import Course
from model.record import Record
from model.student import Student
from model.material import Material
from model.comment import Comment
import os
blueprint_teacher = Blueprint('teacher', __name__)
# 主页
@blueprint_teacher.route('/teacher')
def main_page():
return render_template('teacher/main_page.html')
# 新开课程
@blueprint_teacher.route('/teacher/course/new', methods=['GET', 'POST'])
def new_course():
message = Message()
if request.method == 'POST':
name = request.form.get('name')
room = request.form.get('room')
teacher_number = session['teacher_number']
Course.add(name=name, room=room, teacher_number=teacher_number)
message.set_ok('开课成功')
return render_template('/teacher/new_course.html', message=message)
# 管理课程
@blueprint_teacher.route('/teacher/courses')
def courses():
if not session.get('teacher_number'):
abort(404)
courses = Course.query_by_teacher_number(session.get('teacher_number'))
return render_template('/teacher/my_course.html', courses=courses)
# 学生名单
@blueprint_teacher.route('/teacher/course/<course_id>/students')
def student_list(course_id):
course = Course.query_by_id(course_id)
records = Record.query_by_course_id(course_id)
students = []
for record in records:
student = Student.query_by_number(record.student_number)
if student:
students.append(student)
return render_template('/teacher/student_list.html', course=course, students=students)
# 学生分数
@blueprint_teacher.route('/teacher/course/<course_id>/scores', methods=['POST', 'GET'])
def student_score(course_id):
message = Message()
course = Course.query_by_id(course_id)
records = Record.query_by_course_id(course_id)
students = []
for record in records:
student = Student.query_by_number(record.student_number)
if student:
students.append(student)
if request.method == 'POST':
for record in records:
score = request.form.get(str(record.student_number))
if score:
record.set_value(score=score)
message.set_ok('成绩录入成功')
results = []
for record in records:
student = Student.query_by_number(record.student_number)
if student:
result = {'number': student.number, 'name': student.name, 'score': record.score}
results.append(result)
return render_template('/teacher/student_scores.html', message=message, results=results)
# 课程资料
@blueprint_teacher.route('/teacher/<course_id>/materials', methods=['POST', 'GET'])
def course_material(course_id):
if request.method == 'POST':
uploaded_file = request.files['upload_file'] # 获取上传文件对象
# 即使没有选中文件上传也会存在文件对象,
# 但是他的文件名为空,因此在这里通过文件名是否
# 为空来判断是否真的有文件上传
if uploaded_file.filename != '':
if not os.path.exists(f'{app.config['FILE_PATH']}/{course_id}'):
os.mkdir(f'{app.config['FILE_PATH']}/{course_id}')
# 图片文件保存为ISBN号
save_path = f'{app.config['FILE_PATH']}/{course_id}/{uploaded_file.filename}'
uploaded_file.save(save_path) # 保存文件
Material.add(course_id=course_id, file=uploaded_file.filename)
materials = Material.query_by_course_id(course_id)
return render_template('/teacher/course_material.html', materials=materials)
# 查看学生评论
@blueprint_teacher.route('/teacher/course/<course_id>/comments')
def view_comments(course_id):
course = Course.query_by_id(course_id)
comments = Comment.query_by_course_id(course_id)
return render_template('/teacher/view_comments.html', course=course, comments=comments)
# 删除学生评论
@blueprint_teacher.route('/teacher/course/<course_id>/comments/delete/<comment_id>')
def delete_comment(course_id, comment_id):
comment = Comment.query.filter_by(id=comment_id).first()
if comment:
db_session.delete(comment)
db_session.commit()
message = Message()
message.set_ok('评论删除成功')
else:
message = Message()
message.set_error('评论不存在')
return redirect(url_for('teacher.view_comments', course_id=course_id, message=message))
原文地址: https://www.cveoy.top/t/topic/n2Pm 著作权归作者所有。请勿转载和采集!