Coverage for app/logic/userManagement.py: 89%

72 statements  

« prev     ^ index     » next       coverage.py v7.2.5, created at 2023-05-24 14:13 +0000

1from app.models.user import User 

2from app.models.term import Term 

3from app.models.programManager import ProgramManager 

4from app.models.program import Program 

5from app.models.eventTemplate import EventTemplate 

6from flask import g, session 

7from app.logic.adminLogs import createLog 

8from playhouse.shortcuts import model_to_dict 

9 

10def addCeltsAdmin(user): 

11 user = User.get_by_id(user) 

12 user.isCeltsAdmin = True 

13 user.save() 

14 createLog(f'Made {user.firstName} {user.lastName} a CELTS admin member.') 

15 

16 

17def addCeltsStudentStaff(user): 

18 user = User.get_by_id(user) 

19 user.isCeltsStudentStaff = True 

20 user.save() 

21 createLog(f'Made {user.firstName} {user.lastName} a CELTS student staff member.') 

22 

23 

24def removeCeltsAdmin(user): 

25 user = User.get_by_id(user) 

26 user.isCeltsAdmin = False 

27 user.save() 

28 createLog(f'Removed {user.firstName} {user.lastName} from CELTS admins.') 

29 

30 

31def removeCeltsStudentStaff(user): 

32 user = User.get_by_id(user) 

33 user.isCeltsStudentStaff = False 

34 user.save() 

35 createLog(f'Removed {user.firstName} {user.lastName} from a CELTS student staff member.') 

36 

37 

38def changeCurrentTerm(term): 

39 oldCurrentTerm = Term.get_by_id(g.current_term) 

40 oldCurrentTerm.isCurrentTerm = False 

41 oldCurrentTerm.save() 

42 newCurrentTerm = Term.get_by_id(term) 

43 newCurrentTerm.isCurrentTerm = True 

44 newCurrentTerm.save() 

45 session["current_term"] = model_to_dict(newCurrentTerm) 

46 createLog(f"Changed Current Term from {oldCurrentTerm.description} to {newCurrentTerm.description}") 

47 

48def addNextTerm(): 

49 newSemesterMap = {"Spring":"Summer", 

50 "Summer":"Fall", 

51 "Fall":"Spring"} 

52 terms = list(Term.select().order_by(Term.id)) 

53 prevTerm = terms[-1] 

54 prevSemester, prevYear = prevTerm.description.split() 

55 

56 newYear = int(prevYear) + 1 if prevSemester == "Fall" else int(prevYear) 

57 newDescription = newSemesterMap[prevSemester] + " " + str(newYear) 

58 newAY = prevTerm.academicYear 

59 

60 if prevSemester == "Summer": # we only change academic year when the latest term in the table is Summer 

61 year1, year2 = prevTerm.academicYear.split("-") 

62 newAY = year2 + "-" + str(int(year2)+1) 

63 

64 newTerm = Term.create( 

65 description=newDescription, 

66 year=newYear, 

67 academicYear=newAY, 

68 isSummer="Summer" in newDescription.split()) 

69 newTerm.save() 

70 

71 return newTerm 

72 

73def changeProgramInfo(newProgramName, newContactEmail, newContactName, newLocation, programId): 

74 """Updates the program info with a new sender and email.""" 

75 program = Program.get_by_id(programId) 

76 updatedProgram = Program.update({Program.programName:newProgramName, Program.contactEmail: newContactEmail, Program.contactName:newContactName, Program.defaultLocation:newLocation}).where(Program.id==programId) 

77 updatedProgram.execute() 

78 if newProgramName != program.programName: 

79 createLog(f"{program.programName} Program Name was changed to: {newProgramName}") 

80 if newContactEmail != program.contactEmail: 

81 createLog(f"{program.programName} Contact Email was changed to: {newContactEmail}") 

82 if newContactName != program.contactName: 

83 createLog(f"{program.programName} Contact Name was changed to: {newContactName}") 

84 if newLocation != program.defaultLocation: 

85 createLog(f"{program.programName} Location was changed to: {newLocation}") 

86 

87 return (f'Program email info updated') 

88 

89def getAllowedPrograms(currentUser): 

90 """Returns a list of all visible programs depending on who the current user is.""" 

91 if currentUser.isCeltsAdmin: 

92 return Program.select().order_by(Program.programName) 

93 else: 

94 return Program.select().join(ProgramManager).where(ProgramManager.user==currentUser).order_by(Program.programName) 

95 

96 

97 

98def getAllowedTemplates(currentUser): 

99 """Returns a list of all visible templates depending on who the current user is. If they are not an admin it should always be none.""" 

100 if currentUser.isCeltsAdmin: 

101 return EventTemplate.select().where(EventTemplate.isVisible==True).order_by(EventTemplate.name) 

102 else: 

103 return []