You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
342 lines
12 KiB
342 lines
12 KiB
from flask import Flask, render_template, flash, session, redirect, url_for, request
|
|
from form import LoginForm, PassForm, TeaInfoForm, EvaInfoForm
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
from flask_login import UserMixin
|
|
|
|
|
|
app = Flask(__name__)
|
|
app.config['SECRET_KEY'] = '123'
|
|
#设置密钥
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:10044006Lxlx@localhost:3306/fkkk'
|
|
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
|
|
# 是否追踪数据库修改,
|
|
app.config['SQLALCHEMY_ECHO'] = True
|
|
# 是否显示底层执行的SQL语句
|
|
db = SQLAlchemy(app)
|
|
# 数据库实例,关联flask 项目
|
|
|
|
# 用户表
|
|
class USER(db.Model):
|
|
__table__name = 'user'
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
username = db.Column(db.String(45))
|
|
password = db.Column(db.String(45))
|
|
stu_id = db.Column(db.String(45), db.ForeignKey('stu_info.stu_id'))
|
|
tea_id = db.Column(db.String(45), db.ForeignKey('tea_info.tea_id'))
|
|
status = db.Column(db.String(45))
|
|
|
|
def __repr__(self):
|
|
return 'USER:%s' % self.username
|
|
|
|
|
|
# 创建教师信息表数据库模型
|
|
class TeaInfo(db.Model):
|
|
__table__name = 'tea_info'
|
|
tea_id = db.Column(db.String(45), primary_key=True)
|
|
name = db.Column(db.String(45))
|
|
tec_title = db.Column(db.String(45))
|
|
department = db.Column(db.String(45))
|
|
gender = db.Column(db.String(45))
|
|
en_year = db.Column(db.String(45))
|
|
birthday = db.Column(db.String(45))
|
|
email = db.Column(db.String(45))
|
|
number = db.Column(db.String(45))
|
|
pol_status = db.Column(db.String(45))
|
|
edu_background = db.Column(db.String(45))
|
|
address = db.Column(db.String(45))
|
|
user = db.relationship('USER', backref=db.backref('tea_info'), uselist=False)
|
|
|
|
def __repr__(self):
|
|
return 'TeaInfo:%s' % self.name
|
|
|
|
|
|
# 学生和课程关联信息表
|
|
registrations = db.Table('registrations',
|
|
db.Column('stu_id', db.String(45), db.ForeignKey('stu_info.stu_id')),
|
|
db.Column('course_id', db.String(45), db.ForeignKey('course_info.course_id'))
|
|
)
|
|
|
|
# 教师和课程关联信息表
|
|
tea_course = db.Table('tea_course',
|
|
db.Column('tea_id', db.String(45), db.ForeignKey('tea_info.tea_id')),
|
|
db.Column('course_id', db.String(45), db.ForeignKey('course_info.course_id'))
|
|
)
|
|
|
|
|
|
# 学生信息表
|
|
class StuInfo(db.Model):
|
|
__table__name = 'stu_info'
|
|
stu_id = db.Column(db.String(45), primary_key=True)
|
|
name = db.Column(db.String(45))
|
|
grade = db.Column(db.String(45))
|
|
department = db.Column(db.String(45))
|
|
gender = db.Column(db.String(45))
|
|
en_year = db.Column(db.String(45))
|
|
birthday = db.Column(db.String(45))
|
|
email = db.Column(db.String(45))
|
|
number = db.Column(db.String(45))
|
|
pol_status = db.Column(db.String(45))
|
|
edu_background = db.Column(db.String(45))
|
|
address = db.Column(db.String(45))
|
|
user = db.relationship('USER', backref=db.backref('stu_info'), uselist=False)
|
|
|
|
def __repr__(self):
|
|
return 'StuInfo:%s' % self.name
|
|
|
|
|
|
# 课程信息表
|
|
class CourseInfo(db.Model):
|
|
__table__name = 'course_info'
|
|
course_id = db.Column(db.String(45), primary_key=True)
|
|
course_name = db.Column(db.String(45))
|
|
course_teacher = db.Column(db.String(45))
|
|
course_credit = db.Column(db.String(45))
|
|
course_time = db.Column(db.String(45))
|
|
stu_info = db.relationship('StuInfo',
|
|
secondary=registrations,
|
|
backref=db.backref('course_info', lazy='dynamic'),
|
|
lazy='dynamic'
|
|
)
|
|
tea_info = db.relation('TeaInfo',
|
|
secondary=tea_course,
|
|
backref=db.backref('course_info', lazy='dynamic'),
|
|
lazy='dynamic'
|
|
)
|
|
|
|
def __repr__(self):
|
|
return 'CourseInfo:%s' % self.course_name
|
|
|
|
|
|
# 评教信息表
|
|
class EvaInfo(db.Model):
|
|
__table__name = 'eva_info'
|
|
#id = db.Column(db.Integer(), primary_key=True)
|
|
eva_course = db.Column(db.String(45), primary_key=True)
|
|
eva_teacher = db.Column(db.String(45))
|
|
eva_student = db.Column(db.String(45), primary_key=True)
|
|
index_one = db.Column(db.Integer())
|
|
index_two = db.Column(db.Integer())
|
|
index_three = db.Column(db.Integer())
|
|
index_four = db.Column(db.Integer())
|
|
opinion = db.Column(db.String(45))
|
|
|
|
def __repr__(self):
|
|
return 'EvaInfo:%s' % self.eva_student
|
|
|
|
|
|
@app.route('/mycourse')
|
|
def mycourse():
|
|
username = session.get('username')
|
|
user = StuInfo.query.filter_by(name=username).first()
|
|
course = user.course_info.all()
|
|
eva_info = EvaInfo.query.with_entities(EvaInfo.eva_teacher, EvaInfo.eva_student)
|
|
return render_template('mycourse.html', stu_course=course, eva_info=eva_info, username=username)
|
|
|
|
|
|
@app.route('/courseinfo')
|
|
def courseinfo():
|
|
user = USER.query.filter_by(username=session.get('username')).first()
|
|
courseid = request.args.get('course_id')
|
|
course = CourseInfo.query.filter_by(course_id=courseid).first()
|
|
context = {
|
|
'userstatus': user.status,
|
|
'courseid': course.course_id,
|
|
'coursename': course.course_name,
|
|
'courseteacher': course.course_teacher,
|
|
'coursecredit': course.course_credit,
|
|
'coursetime': course.course_time
|
|
}
|
|
return render_template('courseinfo.html', **context)
|
|
|
|
|
|
@app.route('/info')
|
|
def info():
|
|
|
|
return render_template('info.html')
|
|
|
|
|
|
@app.route('/pass', methods=['GET', 'POST'])
|
|
def pas():
|
|
form = PassForm()
|
|
if form.validate_on_submit():
|
|
print('验证通过')
|
|
mpass = request.form.get('mpass')
|
|
#print(mpass)
|
|
newpass = request.form.get('newpass')
|
|
#print(newpass)
|
|
username = session.get('username')
|
|
user = USER.query.filter_by(username=username).first()
|
|
if user and user.password == mpass:
|
|
user.password = newpass
|
|
db.session.commit()
|
|
return redirect(url_for('info'))
|
|
else:
|
|
return '修改失败'
|
|
return render_template('pass.html', form=form, username=session.get('username'))
|
|
|
|
|
|
@app.route('/tea_info', methods=['GET', 'POST'])
|
|
def tea_info():
|
|
form = TeaInfoForm()
|
|
user = TeaInfo.query.filter_by(name=session.get('username')).first()
|
|
if form.validate_on_submit():
|
|
tec_title = request.form.get('tec_title')
|
|
department = request.form.get('department')
|
|
gender = request.form.get('gender')
|
|
en_year = request.form.get('en_year')
|
|
birthday = request.form.get('birthday')
|
|
email = request.form.get('email')
|
|
number = request.form.get('number')
|
|
pol_status = request.form.get('pol_status')
|
|
edu_background = request.form.get('edu_background')
|
|
address = request.form.get('address')
|
|
user.address = address
|
|
user.edu_background = edu_background
|
|
user.pol_status = pol_status
|
|
user.number = number
|
|
user.email = email
|
|
user.birthday = birthday
|
|
user.en_year = en_year
|
|
user.gender = gender
|
|
user.department = department
|
|
user.tec_title = tec_title
|
|
db.session.commit()
|
|
context = {
|
|
'tea_id': user.tea_id,
|
|
'name': user.name,
|
|
'tec_title': user.tec_title,
|
|
'department': user.department,
|
|
'gender': user.gender,
|
|
'en_year': user.en_year,
|
|
'birthday': user.birthday,
|
|
'email': user.email,
|
|
'number': user.number,
|
|
'pol_status': user.pol_status,
|
|
'edu_background': user.edu_background,
|
|
'address': user.address
|
|
}
|
|
return render_template('tea_info.html', **context, form=form)
|
|
|
|
|
|
@app.route('/stu_info')
|
|
def stu_info():
|
|
user = StuInfo.query.filter_by(name=session.get('username')).first()
|
|
context = {
|
|
'stu_id': user.stu_id,
|
|
'name': user.name,
|
|
'tec_title': user.grade,
|
|
'department': user.department,
|
|
'grade': user.grade,
|
|
'gender': user.gender,
|
|
'en_year': user.en_year,
|
|
'birthday': user.birthday,
|
|
'email': user.email,
|
|
'number': user.number,
|
|
'pol_status': user.pol_status,
|
|
'edu_background': user.edu_background,
|
|
'address': user.address
|
|
}
|
|
return render_template('stu_info.html', **context)
|
|
|
|
|
|
@app.route('/teacourse')
|
|
def teacourse():
|
|
user = TeaInfo.query.filter_by(name=session.get('username')).first()
|
|
session['tea_id'] = user.tea_id
|
|
teacher = TeaInfo.query.get(session.get('tea_id'))
|
|
# print(student.name)
|
|
teacourse = teacher.course_info.all()
|
|
return render_template('teacourse.html', teacourse=teacourse)
|
|
|
|
|
|
@app.route('/eva_result')
|
|
def eva_result():
|
|
courseid = request.args.get('course_id')
|
|
coursename = request.args.get('course_name')
|
|
courseteacher = request.args.get('course_teacher')
|
|
course_info = EvaInfo.query.filter_by(eva_course=coursename, eva_teacher=courseteacher)
|
|
count = 0
|
|
j = 0
|
|
sum1 = []
|
|
sum2 = []
|
|
sum3 = []
|
|
sum4 = []
|
|
for i in course_info:
|
|
sum1.append(i.index_one)
|
|
sum2.append(i.index_two)
|
|
sum3.append(i.index_three)
|
|
sum4.append(i.index_four)
|
|
count += 1
|
|
su1 = sum(sum1)
|
|
su2 = sum(sum2)
|
|
su3 = sum(sum3)
|
|
su4 = sum(sum4)
|
|
return render_template('eva_result.html', courseid=courseid, coursename=coursename, courseteacher=courseteacher
|
|
, course_info=course_info, su1=su1, su2=su2, su3=su3, su4=su4, count=count)
|
|
|
|
|
|
@app.route('/eva_teacher', methods=['GET', 'POST'])
|
|
def eva_teacher():
|
|
username = session.get("username")
|
|
courseid = request.args.get('course_id')
|
|
coursename = request.args.get('course_name')
|
|
courseteacher = request.args.get('course_teacher')
|
|
form = EvaInfoForm()
|
|
try:
|
|
if form.validate_on_submit():
|
|
index_one = request.form.get('index_one')
|
|
index_two = request.form.get('index_two')
|
|
index_three = request.form.get('index_three')
|
|
index_four = request.form.get('index_four')
|
|
opinion = request.form.get('opinion')
|
|
eva_info = EvaInfo(eva_course=coursename, eva_teacher=courseteacher, eva_student=username,
|
|
index_one=index_one, index_two=index_two, index_three=index_three,
|
|
index_four=index_four, opinion=opinion)
|
|
db.session.add(eva_info)
|
|
db.session.commit()
|
|
return redirect(url_for('info'))
|
|
except:
|
|
return "不可重复评教"
|
|
return render_template('eva_teacher.html', form=form, courseid=courseid, coursename=coursename, courseteacher=courseteacher, username=username)
|
|
|
|
|
|
@app.route('/stu')
|
|
def stu():
|
|
return render_template('stu.html', username=session.get('username'))
|
|
|
|
|
|
@app.route('/tea')
|
|
def tea():
|
|
return render_template('tea.html', username=session.get('username'))
|
|
|
|
|
|
@app.route('/', methods=['GET', 'POST'])
|
|
def login():
|
|
form = LoginForm()
|
|
# username = form.username.data
|
|
# password = form.password.data
|
|
if form.validate_on_submit():
|
|
session['username'] = request.form.get('username', None)
|
|
status = request.form.get('status')
|
|
#status = request.form.get('status', None)
|
|
user = USER.query.filter_by(username=session.get('username')).first()
|
|
#if not user:
|
|
# flash('该用户不存在')
|
|
# flash('密码错误')
|
|
if user and request.form.get('password') == user.password:
|
|
if user.status == '0':
|
|
if status != user.status:
|
|
flash('用户类型错误')
|
|
else:
|
|
return render_template('stu.html', username=session.get('username'))
|
|
else:
|
|
if status != user.status:
|
|
flash('用户类型错误')
|
|
else:
|
|
return render_template('tea.html', username=session.get('username'))
|
|
return render_template('login.html', form=form)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(debug=True)
|