Coverage for app/controllers/events/routes.py: 38%
61 statements
« prev ^ index » next coverage.py v7.10.2, created at 2026-07-08 20:07 +0000
« prev ^ index » next coverage.py v7.10.2, created at 2026-07-08 20:07 +0000
1from app.logic.campusGroups import CampusGroups
2from flask import Flask, redirect, flash, url_for, request, render_template, g, json, abort, session, jsonify
3import requests, xmltodict
4from datetime import datetime
5from peewee import DoesNotExist
7from app.models.term import Term
8from app.models.program import Program
9from app.models.event import Event
10from app.models.eventParticipant import EventParticipant
11from app.models.user import User
12from app.controllers.events import events_bp
13from app.controllers.events import email
14from app.logic.emailHandler import EmailHandler
15from app.logic.participants import addBnumberAsParticipant
17from app import app
20@events_bp.route('/event/<eventid>/scannerentry', methods=['GET'])
21def loadKiosk(eventid):
22 """Renders kiosk for specified event."""
23 event = Event.get_by_id(eventid)
24 return render_template("/events/eventKiosk.html",
25 event = event,
26 eventid = eventid)
28@events_bp.route('/signintoEvent', methods=['POST'])
29def kioskSignin():
30 """Utilizes form data and sign in function. Returns correct flasher message."""
31 eventid = request.form["eventid"]
32 bnumber = request.form["bNumber"]
34 if not bnumber: # Avoids string index out of range error
35 return "", 500
37 # scanned bNumber starts with ";" and ends with "?"
38 if bnumber[0]==";" and bnumber[-1]=="?":
39 bnumber = "B"+ bnumber[1:9]
40 else:
41 # regular bnumber with or without a 'B'
42 if bnumber[0].isdigit():
43 bnumber = "B"+ bnumber[0:8]
44 elif bnumber[0].upper() != "B":
45 return "", 500
46 try:
47 kioskUser, userStatus = addBnumberAsParticipant(bnumber, eventid)
48 if kioskUser:
49 return {"user": f"{kioskUser.firstName} {kioskUser.lastName}", "status": userStatus}
50 else:
51 return {"user": None, "status": userStatus}
53 except Exception as e:
54 print("Error in Kiosk Page", e)
55 return "", 500
57@events_bp.route('/retrieveEvents', methods=['GET'])
58def retrieveEvents():
59 try:
60 cg = CampusGroups()
61 events = cg.getEvents()
62 return events
63 except requests.exceptions.RequestException as e:
64 print("Error retrieving data from campusgroups: \n", e)
65 return "", 500
68@events_bp.route('/addEventToCampusGroups/<event_id>', methods=['GET'])
69def addEventToCampusGroups(event_id):
70 if app.env == "production":
71 campusGroupsEnv = "production"
72 else:
73 campusGroupsEnv = "sandbox"
75 try:
76 cg = CampusGroups(campusGroupsEnv)
77 data = cg.parseEventData(event_id)
78 response = cg.addEvent(data)
79 return response # FIXME Return a better response, or parse this in the front end
80 except requests.exceptions.RequestException as e:
81 print("Error retrieving data from campusgroups: \n", e)
82 return "", 500