Coverage for app/controllers/admin/userManagement.py: 28%
81 statements
« prev ^ index » next coverage.py v7.2.7, created at 2025-01-29 15:39 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2025-01-29 15:39 +0000
1from flask import render_template,request, flash, g, abort, redirect, url_for
2import re
3from app.controllers.admin import admin_bp
4from app.models.user import User
5from app.models.program import Program
6from app.logic.userManagement import addCeltsAdmin,addCeltsStudentStaff,removeCeltsAdmin,removeCeltsStudentStaff
7from app.logic.userManagement import changeProgramInfo
8from app.logic.utils import selectSurroundingTerms
9from app.logic.term import addNextTerm, changeCurrentTerm
10from app.logic.fileHandler import FileHandler
11from app.models.attachmentUpload import AttachmentUpload
13@admin_bp.route('/admin/manageUsers', methods = ['POST'])
14def manageUsers():
15 eventData = request.form
16 user = eventData['user']
17 method = eventData['method']
18 username = re.sub("[()]","", (user.split())[-1])
20 try:
21 user = User.get_by_id(username)
22 except Exception as e:
23 print(e)
24 flash(username + " is an invalid user.", "danger")
25 return ("danger", 500)
27 if method == "addCeltsAdmin":
28 if user.isStudent and not user.isCeltsStudentStaff:
29 flash(user.firstName + " " + user.lastName + " cannot be added as a CELTS-Link admin", 'danger')
30 else:
31 if user.isCeltsAdmin:
32 flash(user.firstName + " " + user.lastName + " is already a CELTS-Link Admin", 'danger')
33 else:
34 addCeltsAdmin(user)
35 flash(user.firstName + " " + user.lastName + " has been added as a CELTS-Link Admin", 'success')
36 elif method == "addCeltsStudentStaff":
37 if not user.isStudent:
38 flash(username + " cannot be added as CELTS Student Staff", 'danger')
39 else:
40 if user.isCeltsStudentStaff:
41 flash(user.firstName + " " + user.lastName + " is already a CELTS Student Staff", 'danger')
42 else:
43 addCeltsStudentStaff(user)
44 flash(user.firstName + " " + user.lastName + " has been added as a CELTS Student Staff", 'success')
45 elif method == "removeCeltsAdmin":
46 removeCeltsAdmin(user)
47 flash(user.firstName + " " + user.lastName + " is no longer a CELTS Admin ", 'success')
48 elif method == "removeCeltsStudentStaff":
49 removeCeltsStudentStaff(user)
50 flash(user.firstName + " " + user.lastName + " is no longer a CELTS Student Staff", 'success')
51 return ("success")
54@admin_bp.route('/deleteProgramFile', methods=['POST'])
55def deleteProgramFile():
56 programFile=FileHandler(programId=request.form["programID"])
57 programFile.deleteFile(request.form["fileId"])
58 return ""
60@admin_bp.route('/admin/updateProgramInfo/<programID>', methods=['POST'])
61def updateProgramInfo(programID):
62 if g.current_user.isCeltsAdmin:
63 try:
64 programInfo = request.form # grabs user inputs
65 uploadedFile = request.files.get('modalProgramImage')
66 changeProgramInfo(programID, uploadedFile, **programInfo)
68 flash("Program updated", "success")
69 return redirect(url_for("admin.userManagement", accordion="program"))
70 except Exception as e:
71 flash('Error while updating program info.','warning')
72 abort(500,'Error while updating program.')
73 abort(403)
75@admin_bp.route('/admin', methods = ['GET'])
76def userManagement():
77 terms = selectSurroundingTerms(g.current_term)
78 current_programs = Program.select()
79 currentAdmins = list(User.select().where(User.isCeltsAdmin))
80 currentStudentStaff = list(User.select().where(User.isCeltsStudentStaff))
81 if g.current_user.isCeltsAdmin:
82 return render_template('admin/userManagement.html',
83 terms = terms,
84 programs = list(current_programs),
85 currentAdmins = currentAdmins,
86 currentStudentStaff = currentStudentStaff,
87 )
88 abort(403)
90@admin_bp.route('/admin/changeTerm', methods=['POST'])
91def changeTerm():
92 termData = request.form
93 term = int(termData["id"])
94 changeCurrentTerm(term)
95 return ""
97@admin_bp.route('/admin/addNewTerm', methods = ['POST'])
98def addNewTerm():
99 addNextTerm()
100 return ""