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

53 statements  

« prev     ^ index     » next       coverage.py v7.2.5, created at 2023-05-24 14:13 +0000

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

2from datetime import datetime 

3from peewee import DoesNotExist 

4from urllib.parse import urlparse 

5 

6from app.models.term import Term 

7from app.models.program import Program 

8from app.models.event import Event 

9from app.models.eventParticipant import EventParticipant 

10from app.models.user import User 

11from app.models.programEvent import ProgramEvent 

12from app.controllers.events import events_bp 

13from app.controllers.events import email 

14from app.logic.emailHandler import EmailHandler 

15from app.logic.participants import sendUserData 

16 

17@events_bp.route('/email', methods=['POST']) 

18def email(): 

19 raw_form_data = request.form.copy() 

20 attachments = request.files.getlist('attachmentObject') 

21 if "@" in raw_form_data['emailSender']: 

22 # when people are sending emails as themselves (using mailto) --- Q: are we still going with the mailto option? 

23 pass 

24 else: 

25 url_domain = urlparse(request.base_url).netloc 

26 mail = EmailHandler(raw_form_data, url_domain, g.current_user, attachment_file=attachments) 

27 mail_sent = mail.send_email() 

28 

29 if mail_sent: 

30 message, status = 'Email successfully sent!', 'success' 

31 else: 

32 message, status = 'Error sending email', 'danger' 

33 flash(message, status) 

34 return redirect(url_for("main.events", selectedTerm = raw_form_data['selectedTerm'])) 

35 

36@events_bp.route('/eventsList/<eventid>/kiosk', methods=['GET']) 

37def loadKiosk(eventid): 

38 """Renders kiosk for specified event.""" 

39 event = Event.get_by_id(eventid) 

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

41 event = event, 

42 eventid = eventid) 

43 

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

45def signinEvent(): 

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

47 eventid = request.form["eventid"] 

48 bnumber = request.form["bNumber"] 

49 programid = ProgramEvent.select(ProgramEvent.program).where(ProgramEvent.event == eventid) 

50 

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

52 return "", 500 

53 

54 if bnumber[0]==";" and bnumber[-1]=="?": # scanned bNumber starts with ";" and ends with "?" 

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

56 else: 

57 if bnumber[0].isdigit(): 

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

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

60 return "", 500 

61 try: 

62 kioskUser, userStatus = sendUserData(bnumber, eventid, programid) 

63 if kioskUser: 

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

65 else: 

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

67 

68 except Exception as e: 

69 print("Error in Main Page", e) 

70 return "", 500