Files
drl_2/xuexiao/routes/teacher.py

74 lines
3.1 KiB
Python
Raw Normal View History

2026-05-29 10:28:07 +08:00
"""老师管理路由"""
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/<int:id>', 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)