74 lines
3.1 KiB
Python
74 lines
3.1 KiB
Python
"""老师管理路由"""
|
|
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)
|