Initial commit
This commit is contained in:
73
xuexiao/routes/teacher.py
Normal file
73
xuexiao/routes/teacher.py
Normal file
@@ -0,0 +1,73 @@
|
||||
"""老师管理路由"""
|
||||
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)
|
||||
Reference in New Issue
Block a user