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

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 

6 

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 

16 

17from app import app 

18 

19 

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) 

27 

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"] 

33 

34 if not bnumber: # Avoids string index out of range error 

35 return "", 500 

36 

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} 

52 

53 except Exception as e: 

54 print("Error in Kiosk Page", e) 

55 return "", 500 

56 

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 

66 

67 

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" 

74 

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 

83