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

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 

12 

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]) 

19 

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) 

26 

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") 

52 

53 

54@admin_bp.route('/deleteProgramFile', methods=['POST']) 

55def deleteProgramFile(): 

56 programFile=FileHandler(programId=request.form["programID"]) 

57 programFile.deleteFile(request.form["fileId"]) 

58 return "" 

59 

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) 

67 

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) 

74 

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) 

89 

90@admin_bp.route('/admin/changeTerm', methods=['POST']) 

91def changeTerm(): 

92 termData = request.form 

93 term = int(termData["id"]) 

94 changeCurrentTerm(term) 

95 return "" 

96 

97@admin_bp.route('/admin/addNewTerm', methods = ['POST']) 

98def addNewTerm(): 

99 addNextTerm() 

100 return ""