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
« 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
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
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()
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']))
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)
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)
51 if not bnumber: # Avoids string index out of range error
52 return "", 500
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}
68 except Exception as e:
69 print("Error in Main Page", e)
70 return "", 500