"""老师管理路由""" from flask import render_template, request, redirect, url_for, flash from models import db, Teacher from utils import login_required, log_operation, permission_required, export_excel def register_routes(app): @app.route('/teachers', endpoint='teacher_list') @login_required @permission_required('teacher_view') def teacher_list(): keyword = request.args.get('keyword', '') query = Teacher.query if keyword: query = query.filter(Teacher.name.contains(keyword)) teachers = query.order_by(Teacher.id.desc()).all() return render_template('teacher_list.html', teachers=teachers, keyword=keyword) @app.route('/teachers/add', methods=['GET', 'POST'], endpoint='teacher_add') @login_required @permission_required('teacher_add') def teacher_add(): if request.method == 'POST': teacher = Teacher( name=request.form.get('name'), phone=request.form.get('phone'), specialty=request.form.get('specialty'), status=int(request.form.get('status', 1)), remark=request.form.get('remark', '') ) db.session.add(teacher) db.session.commit() log_operation('创建老师', f'老师:{teacher.name}') flash('老师创建成功', 'success') return redirect(url_for('teacher_list')) return render_template('teacher_form.html', teacher=None) @app.route('/teachers/edit/', methods=['GET', 'POST'], endpoint='teacher_edit') @login_required @permission_required('teacher_edit') def teacher_edit(id): teacher = db.session.get(Teacher, id) if request.method == 'POST': teacher.name = request.form.get('name') teacher.phone = request.form.get('phone') teacher.specialty = request.form.get('specialty') teacher.status = int(request.form.get('status', 1)) teacher.remark = request.form.get('remark', '') db.session.commit() log_operation('编辑老师', f'老师ID:{id}') flash('老师更新成功', 'success') return redirect(url_for('teacher_list')) return render_template('teacher_form.html', teacher=teacher) @app.route('/teachers/export', endpoint='teacher_export') @login_required @permission_required('teacher_export') def teacher_export(): query = Teacher.query keyword = request.args.get('keyword', '').strip() if keyword: query = query.filter(Teacher.name.contains(keyword)) teachers = query.order_by(Teacher.id.desc()).all() headers = ['序号', '姓名', '电话', '专长', '状态', '备注', '创建时间'] rows = [] for i, t in enumerate(teachers, 1): rows.append([i, t.name, t.phone or '', t.specialty or '', '在职' if t.status else '离职', t.remark or '', t.created_at.strftime('%Y-%m-%d %H:%M') if t.created_at else '']) return export_excel('老师列表', headers, rows)