b_studentinfo.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. from flask import Flask, flash, render_template, session, request, redirect, url_for, jsonify
  2. from admin.studentinfo import *
  3. from flask import current_app as app
  4. from werkzeug.utils import secure_filename
  5. import os
  6. from hashlib import md5
  7. from pathlib import Path
  8. from datetime import datetime
  9. # 设置允许的文件格式
  10. ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG', 'PNG', 'bmp'])
  11. #判断文件格式
  12. def allowed_file (filename):
  13. return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
  14. #------------------学生信息管理------------------
  15. @app.route('/studentmanage')
  16. def studentmanage():
  17. if 'username' in session:
  18. studentlist = loadAllStudent()
  19. return render_template('admin/a_student_manage.html', results= studentlist)
  20. else:
  21. flash('登录失败, 请重新登录')
  22. return redirect(url_for('adminlogin'))
  23. #打开学生信息添加页面
  24. @app.route('/newstudentinfo')
  25. def newstudentinfo():
  26. if 'username' in session:
  27. return render_template('admin/a_student_edit.html', status="add")
  28. else:
  29. flash('登录失败, 请重新登录')
  30. return redirect(url_for('adminlogin'))
  31. #打开学生信息编辑页面
  32. @app.route('/loadstudentforedit/<sid>', methods = ['POST','GET'])
  33. def loadstudentforedit(sid):
  34. if 'username' in session:
  35. studentinfo = loadStudentByID(sid)
  36. return render_template('admin/a_student_edit.html', studentinfo = studentinfo, status="edit")
  37. else:
  38. flash('登录失败, 请重新登录')
  39. return redirect(url_for('adminlogin'))
  40. @app.route('/editstudentinfo.do', methods = ['POST'])
  41. def editstudentinfo():
  42. if request.method == 'POST':
  43. status = request.form['lbl_status']
  44. SNameCN = request.form['txt_SNameCN']
  45. SNameEN = request.form['txt_SNameEN']
  46. UniversityNameCN = request.form['txt_UniversityNameCN']
  47. UniversityNameEN = request.form['txt_UniversityNameEN']
  48. MajorNameCN = request.form['txt_MajorNameCN']
  49. MajorNameEN = request.form['txt_MajorNameEN']
  50. SType = request.form['txt_SType']
  51. SYear = request.form['txt_SYear']
  52. Email = request.form['txt_Email']
  53. SImage = request.form['txt_SImage']
  54. SIntroduce = request.form['txt_SIntroduce'].strip('\'"') #或者用eval(request.form['txt_SIntroduce']) 把返回的json字符串两端的双引号去掉
  55. SIntroduce = SIntroduce.replace('''"''', r'''\"''').replace("'", r"\'")
  56. SResearchwork = request.form['txt_SResearchwork'].strip('\'"')
  57. # 把返回的json字符串两端的双引号去掉
  58. SResearchwork = SResearchwork.replace('''"''', r'''\"''').replace("'", r"\'")
  59. f = request.files['file_proimg']
  60. proimg = ""
  61. if (f != None and f.filename != ""):
  62. proimg = uploadimage(f)
  63. if proimg == "":
  64. proimg = SImage
  65. if status == 'add':
  66. data = [SNameCN, SNameEN, UniversityNameCN, UniversityNameEN, MajorNameCN, MajorNameEN, SType, SYear, Email, proimg, SIntroduce, SResearchwork]
  67. i, msg = add_StudentInfo(data)
  68. if i > 0:
  69. flash('学生信息添加成功!')
  70. else:
  71. flash('学生信息添加失败!'+str(msg))
  72. elif status == 'edit':
  73. SID=request.form['lbl_sid']
  74. data = [SNameCN, SNameEN, UniversityNameCN, UniversityNameEN, MajorNameCN, MajorNameEN, SType, SYear, Email, proimg, SIntroduce, SResearchwork, SID]
  75. i, msg = update_Student(data)
  76. if i > 0:
  77. flash('学生信息修改成功!' + str(msg))
  78. else:
  79. flash('学生信息修改失败!' + str(msg))
  80. return redirect(url_for('studentmanage'))
  81. def uploadimage(f):
  82. #f = request.files['file_proimg']
  83. if not (f and allowed_file(f.filename)):
  84. return "False" #jsonify({"error": 1001, "msg": """请检查上传的图片类型,仅限于png、PNG、jpg、JPG、bmp"})
  85. digest = md5(f.filename.encode("utf-8")).hexdigest()
  86. suffix = Path(f.filename).suffix
  87. images_name = datetime.now().strftime('%Y%m%d%H%M%S') + f'{digest}{suffix}'
  88. #images_name = datetime.now().strftime('%Y%m%d%H%M%S') + '11'
  89. file_path = os.path.join(app.config['UPLOAD_FOLDER_IMG_Student'], images_name)
  90. f.save(file_path)
  91. return file_path #"Success" #jsonify(file_path)
  92. #查看学生
  93. @app.route('/viewstudent/<sid>', methods = ['POST','GET'])
  94. def viewstudent(sid):
  95. if 'username' in session:
  96. studentinfo = loadStudentByID(sid)
  97. return render_template('admin/a_student_view.html', studentinfo = studentinfo)
  98. else:
  99. flash('登录失败, 请重新登录')
  100. return redirect(url_for('adminlogin'))
  101. #删除学生信息
  102. @app.route('/delstudent/<sid>', methods = ['POST'])
  103. def delstudent(sid):
  104. i, msg = del_Student(sid)
  105. if i > 0:
  106. flash('学生信息删除成功!')
  107. else:
  108. flash('学生信息删除失败!%s' % str(msg))
  109. return redirect(url_for('studentmanage'))