Coverage for app/controllers/events/routes.py: 38%

60 statements  

« prev     ^ index     » next       coverage.py v7.10.2, created at 2026-09-22 13:52 +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 

64 except requests.exceptions.RequestException as e: 

65 print("Error retrieving data from campusgroups: \n", e) 

66 return "", 500 

67 

68 

69@events_bp.route('/addEventToCampusGroups', methods=['POST']) 

70def addEventToCampusGroups(): 

71 try: 

72 cg = CampusGroups() 

73 data = cg.parseEventData(request.form.get("eventId")) 

74 response = cg.addEvent(data) 

75 flash("Event pushed to CampusGroups successfully.", "success") 

76 

77 return response # FIXME Return a better response, or parse this in the front end 

78 

79 except Exception as e: 

80 print("Error pushing event to campusgroups: \n", e) 

81 flash("Error pushing event to CampusGroups.", "danger") 

82 

83 return "", 500