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

40 statements  

« prev     ^ index     » next       coverage.py v7.10.2, created at 2025-09-02 19:10 +0000

1from flask import Flask, redirect, flash, url_for, request, render_template, g, json, abort, session 

2from datetime import datetime 

3from peewee import DoesNotExist 

4 

5from app.models.term import Term 

6from app.models.program import Program 

7from app.models.event import Event 

8from app.models.eventParticipant import EventParticipant 

9from app.models.user import User 

10from app.controllers.events import events_bp 

11from app.controllers.events import email 

12from app.logic.emailHandler import EmailHandler 

13from app.logic.participants import addBnumberAsParticipant 

14 

15 

16@events_bp.route('/event/<eventid>/scannerentry', methods=['GET']) 

17def loadKiosk(eventid): 

18 """Renders kiosk for specified event.""" 

19 event = Event.get_by_id(eventid) 

20 return render_template("/events/eventKiosk.html", 

21 event = event, 

22 eventid = eventid) 

23 

24@events_bp.route('/signintoEvent', methods=['POST']) 

25def kioskSignin(): 

26 isLabor = request.form.get("isitlabor") == "1" 

27 

28 """Utilizes form data and sign in function. Returns correct flasher message.""" 

29 eventid = request.form["eventid"] 

30 bnumber = request.form["bNumber"] 

31 

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

33 return "", 500 

34 

35 # scanned bNumber starts with ";" and ends with "?" 

36 if bnumber[0]==";" and bnumber[-1]=="?": 

37 bnumber = "B"+ bnumber[1:9] 

38 else: 

39 # regular bnumber with or without a 'B' 

40 if bnumber[0].isdigit(): 

41 bnumber = "B"+ bnumber[0:8] 

42 elif bnumber[0].upper() != "B": 

43 return "", 500 

44 try: 

45 if isLabor: 

46 kioskUser, userStatus = addBnumberAsParticipant(bnumber, eventid, True) 

47 else: 

48 kioskUser, userStatus = addBnumberAsParticipant(bnumber, eventid, False) 

49 if kioskUser: 

50 return {"user": f"{kioskUser.firstName} {kioskUser.lastName}", "status": userStatus} 

51 else: 

52 return {"user": None, "status": userStatus} 

53 

54 except Exception as e: 

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

56 return "", 500