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

61 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2024-12-03 20:44 +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 app.models.attachmentUpload import AttachmentUpload 

7from flask import g, session 

8from app.logic.createLogs import createActivityLog 

9from playhouse.shortcuts import model_to_dict 

10from app.logic.fileHandler import FileHandler 

11 

12def addCeltsAdmin(user): 

13 user = User.get_by_id(user) 

14 user.isCeltsAdmin = True 

15 user.save() 

16 createActivityLog(f'Made {user.firstName} {user.lastName} a CELTS admin member.') 

17 

18 

19def addCeltsStudentStaff(user): 

20 user = User.get_by_id(user) 

21 user.isCeltsStudentStaff = True 

22 user.save() 

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

24 

25 

26def removeCeltsAdmin(user): 

27 user = User.get_by_id(user) 

28 user.isCeltsAdmin = False 

29 user.save() 

30 createActivityLog(f'Removed {user.firstName} {user.lastName} from CELTS admins.') 

31 

32 

33def removeCeltsStudentStaff(user): 

34 user = User.get_by_id(user) 

35 programManagerRoles = list([obj.program.programName for obj in ProgramManager.select(Program).join(Program).where(ProgramManager.user == user)]) 

36 programManagerRoles = ", ".join(programManagerRoles) 

37 ProgramManager.delete().where(ProgramManager.user_id == user).execute() 

38 user.isCeltsStudentStaff = False 

39 user.save() 

40 createActivityLog(f'Removed {user.firstName} {user.lastName} from a CELTS student staff member'+ 

41 (f', and as a manager of {programManagerRoles}.' if programManagerRoles else ".")) 

42 

43def changeProgramInfo(programId, 

44 attachment, 

45 programName= None, 

46 programDescription = None, 

47 partner = None, 

48 contactEmail=None, 

49 contactName= None, 

50 location = None, 

51 instagramUrl = None, 

52 facebookUrl = None, 

53 bereaUrl = None): 

54 

55 

56 """Updates the program info and logs that change""" 

57 program = Program.get_by_id(programId) 

58 if attachment: 

59 addFile: FileHandler = FileHandler(attachment, programId=programId) 

60 addFile.saveFiles() 

61 updatedProgram = Program.update( 

62 { Program.programName:programName, 

63 Program.programDescription: programDescription, 

64 Program.partner: partner, 

65 Program.contactEmail: contactEmail, 

66 Program.contactName: contactName, 

67 Program.defaultLocation: location, 

68 Program.instagramUrl:instagramUrl, 

69 Program.facebookUrl: facebookUrl, 

70 Program.bereaUrl: bereaUrl 

71 } 

72 ).where(Program.id==programId) 

73 updatedProgram.execute() 

74 

75 

76 if programName != program.programName: 

77 createActivityLog(f"{program.programName} Program Name was changed to: {programName}") 

78 if programDescription != program.programDescription: 

79 createActivityLog(f"{program.programName} Description was changed to: {programDescription}") 

80 if partner != program.partner: 

81 createActivityLog(f"{program.programName} Program Partner was changed to: {partner}") 

82 if contactEmail != program.contactEmail: 

83 createActivityLog(f"{program.programName} Contact Email was changed to: {contactEmail}") 

84 if contactName != program.contactName: 

85 createActivityLog(f"{program.programName} Contact Name was changed to: {contactName}") 

86 if location != program.defaultLocation: 

87 createActivityLog(f"{program.programName} Location was changed to: {location}") 

88 

89 

90 return (f'Program email info updated') 

91 

92def getAllowedPrograms(currentUser): 

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

94 if currentUser.isCeltsAdmin: 

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

96 else: 

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

98 

99 

100 

101def getAllowedTemplates(currentUser): 

102 """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.""" 

103 if currentUser.isCeltsAdmin: 

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

105 else: 

106 return []