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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录