@@ -159,6 +159,33 @@ def health():
159159 return {'status' : 'ok' }
160160
161161
162+ @app .route ("/gatekeep" , methods = ['POST' ])
163+ def gatekeep_status ():
164+ post_data = request .get_json ()
165+ if post_data ['token' ] != app .config ["VOTE_TOKEN" ]:
166+ return "Users cannot access this page" , 403
167+ user_name = post_data ['username' ]
168+ # number of committee meetings attended
169+ c_meetings = len ([m .meeting_id for m in
170+ MemberCommitteeAttendance .query .filter (
171+ MemberCommitteeAttendance .uid == user_name
172+ ) if CommitteeMeeting .query .filter (
173+ CommitteeMeeting .id == m .meeting_id ).first ().approved ])
174+ # technical seminar total
175+ t_seminars = len ([s .seminar_id for s in
176+ MemberSeminarAttendance .query .filter (
177+ MemberSeminarAttendance .uid == user_name
178+ ) if TechnicalSeminar .query .filter (
179+ TechnicalSeminar .id == s .seminar_id ).first ().approved ])
180+ # house meeting total
181+ h_meetings = len ([(m .meeting_id , m .attendance_status ) for m in
182+ MemberHouseMeetingAttendance .query .filter (
183+ MemberHouseMeetingAttendance .uid == user_name )])
184+ result = c_meeting >= 6 and t_seminars >= 2 and h_meetings >= 6
185+ return {"result" : result }, 200
186+
187+
188+
162189@app .errorhandler (404 )
163190@app .errorhandler (500 )
164191@auth .oidc_auth ("default" )
0 commit comments