diff --git a/goathacks/__init__.py b/goathacks/__init__.py index 52ec1c0..be0773b 100644 --- a/goathacks/__init__.py +++ b/goathacks/__init__.py @@ -5,6 +5,7 @@ from flask_login import LoginManager from flask_assets import Bundle, Environment from flask_cors import CORS from flask_mail import Mail, email_dispatched +from flask_qrcode import QRcode db = SQLAlchemy() @@ -13,6 +14,7 @@ login = LoginManager() environment = Environment() cors = CORS() mail = Mail() +qrcode = QRcode() def create_app(): app = Flask(__name__) @@ -25,6 +27,7 @@ def create_app(): environment.init_app(app) cors.init_app(app) mail.init_app(app) + qrcode.init_app(app) scss = Bundle('css/style.scss', filters='scss', output='css/style.css') diff --git a/goathacks/admin/events.py b/goathacks/admin/events.py index cbcfdfc..4026db6 100644 --- a/goathacks/admin/events.py +++ b/goathacks/admin/events.py @@ -1,9 +1,13 @@ -from flask import render_template, redirect, request, url_for, flash +import flask +from flask import Response, render_template, redirect, request, url_for, flash from flask_login import current_user, login_required from goathacks.admin import bp, forms from goathacks import db from goathacks.models import Event +import io, qrcode +import qrcode.image.pure + @bp.route("/events") @login_required def list_events(): @@ -14,6 +18,14 @@ def list_events(): return render_template("events/list.html", events=events) +@bp.route("/events/events.json") +@login_required +def events_json(): + if not current_user.is_admin: + return redirect(url_for("dashboard.home")) + events = Event.query.all() + return Event.create_json_output(events) + @bp.route("/events/new", methods=["GET", "POST"]) @login_required def new_event(): @@ -67,3 +79,16 @@ def edit_event(id): form = forms.EventForm(obj=event) return render_template("events/new_event.html", form=form) + +@bp.route("/events/qrcode/") +@login_required +def qrcode_event(id): + if not current_user.is_admin: + return redirect(url_for("dashboard.home")) + + event = Event.query.filter_by(id=id).first() + if event is None: + flash("Event does not exist") + return redirect(url_for("admin.list_events")) + + return render_template("events/qrcode.html", event=event) diff --git a/goathacks/templates/events/list.html b/goathacks/templates/events/list.html index 4b37285..2aae898 100644 --- a/goathacks/templates/events/list.html +++ b/goathacks/templates/events/list.html @@ -4,6 +4,8 @@

Events

+ Get a JSON readout of events here @@ -15,6 +17,7 @@ + @@ -28,6 +31,8 @@ + {% endfor %} diff --git a/goathacks/templates/events/qrcode.html b/goathacks/templates/events/qrcode.html new file mode 100644 index 0000000..ce48b9e --- /dev/null +++ b/goathacks/templates/events/qrcode.html @@ -0,0 +1,6 @@ + + QR Code for {{ event.name }} + + + + diff --git a/requirements.txt b/requirements.txt index f4c8239..efbd546 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ alembic==1.8.1 click==8.1.3 Flask==2.2.2 +Flask-QRCode Flask-Assets Flask-CORS Flask-Mail
End Category Checked inQR Code New
{{ event.end_time }} {{ event.category }} {{ event.get_checkins()|length }}QR Code Edit