Coverage for app/logic/userManagement.py: 95%
61 statements
« prev ^ index » next coverage.py v7.2.7, created at 2025-07-22 20:03 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2025-07-22 20:03 +0000
1from flask import g, session
2from playhouse.shortcuts import model_to_dict
4from app.models.user import User
5from app.models.term import Term
6from app.models.programManager import ProgramManager
7from app.models.program import Program
8from app.models.eventTemplate import EventTemplate
9from app.models.attachmentUpload import AttachmentUpload
10from app.logic.createLogs import createActivityLog
11from app.logic.fileHandler import FileHandler
13def addCeltsAdmin(user):
14 user = User.get_by_id(user)
15 user.isCeltsAdmin = True
16 user.save()
17 createActivityLog(f'Made {user.firstName} {user.lastName} a CELTS admin member.')
20def addCeltsStudentStaff(user):
21 user = User.get_by_id(user)
22 user.isCeltsStudentStaff = True
23 user.save()
24 createActivityLog(f'Made {user.firstName} {user.lastName} a CELTS student staff member.')
27def removeCeltsAdmin(user):
28 user = User.get_by_id(user)
29 user.isCeltsAdmin = False
30 user.save()
31 createActivityLog(f'Removed {user.firstName} {user.lastName} from CELTS admins.')
34def removeCeltsStudentStaff(user):
35 user = User.get_by_id(user)
36 programManagerRoles = list([obj.program.programName for obj in ProgramManager.select(Program).join(Program).where(ProgramManager.user == user)])
37 programManagerRoles = ", ".join(programManagerRoles)
38 ProgramManager.delete().where(ProgramManager.user_id == user).execute()
39 user.isCeltsStudentStaff = False
40 user.save()
41 createActivityLog(f'Removed {user.firstName} {user.lastName} from a CELTS student staff member'+
42 (f', and as a manager of {programManagerRoles}.' if programManagerRoles else "."))
44def changeProgramInfo(programId,
45 attachment,
46 programName= None,
47 programDescription = None,
48 partner = None,
49 contactEmail=None,
50 contactName= None,
51 location = None,
52 instagramUrl = None,
53 facebookUrl = None,
54 bereaUrl = None):
57 """Updates the program info and logs that change"""
58 program = Program.get_by_id(programId)
59 if attachment:
60 addFile: FileHandler = FileHandler(attachment, programId=programId)
61 addFile.saveFiles()
62 updatedProgram = Program.update(
63 { Program.programName:programName,
64 Program.programDescription: programDescription,
65 Program.partner: partner,
66 Program.contactEmail: contactEmail,
67 Program.contactName: contactName,
68 Program.defaultLocation: location,
69 Program.instagramUrl:instagramUrl,
70 Program.facebookUrl: facebookUrl,
71 Program.bereaUrl: bereaUrl
72 }
73 ).where(Program.id==programId)
74 updatedProgram.execute()
77 if programName != program.programName:
78 createActivityLog(f"{program.programName} Program Name was changed to: {programName}")
79 if programDescription != program.programDescription:
80 createActivityLog(f"{program.programName} Description was changed to: {programDescription}")
81 if partner != program.partner:
82 createActivityLog(f"{program.programName} Program Partner was changed to: {partner}")
83 if contactEmail != program.contactEmail:
84 createActivityLog(f"{program.programName} Contact Email was changed to: {contactEmail}")
85 if contactName != program.contactName:
86 createActivityLog(f"{program.programName} Contact Name was changed to: {contactName}")
87 if location != program.defaultLocation:
88 createActivityLog(f"{program.programName} Location was changed to: {location}")
91 return (f'Program email info updated')
93def getAllowedPrograms(currentUser):
94 """Returns a list of all visible programs depending on who the current user is."""
95 if currentUser.isCeltsAdmin:
96 return Program.select().order_by(Program.programName)
97 else:
98 return Program.select().join(ProgramManager).where(ProgramManager.user==currentUser).order_by(Program.programName)
102def getAllowedTemplates(currentUser):
103 """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."""
104 if currentUser.isCeltsAdmin:
105 return EventTemplate.select().where(EventTemplate.isVisible==True).order_by(EventTemplate.name)
106 else:
107 return []