dash: Finish shirt size and accomodations selector

This commit is contained in:
Cara Salter 2022-12-06 10:54:20 -05:00
parent 26468e82ea
commit 036ca7b21e
No known key found for this signature in database
GPG key ID: 90C66610C82B29CA
8 changed files with 83 additions and 22 deletions

View file

@ -1,10 +1,18 @@
from flask import Blueprint, render_template from flask import Blueprint, flash, render_template, request
from flask_login import login_required from flask_login import current_user, login_required
bp = Blueprint("dashboard", __name__, url_prefix="/dashboard") bp = Blueprint("dashboard", __name__, url_prefix="/dashboard")
from goathacks.dashboard import forms
from goathacks import db
@bp.route("/") @bp.route("/", methods=["GET", "POST"])
@login_required @login_required
def home(): def home():
return render_template("dashboard.html") form = forms.ShirtAndAccomForm(request.form)
if request.method == "POST" and form.validate():
current_user.shirt_size = request.form.get('shirt_size')
current_user.accomodations = request.form.get('accomodations')
db.session.commit()
flash("Updated successfully")
return render_template("dashboard.html", form=form)

View file

@ -0,0 +1,9 @@
from flask_wtf import FlaskForm
from wtforms import RadioField, TextAreaField
from wtforms.validators import DataRequired
class ShirtAndAccomForm(FlaskForm):
shirt_size = RadioField("Shirt size", choices=["XS", "S", "M", "L", "XL",
"None"],
validators=[DataRequired()])
accomodations = TextAreaField("Special needs and/or Accomodations")

View file

@ -16,6 +16,7 @@ class User(db.Model, UserMixin):
waitlisted = Column(Boolean, nullable=False, default=False) waitlisted = Column(Boolean, nullable=False, default=False)
shirt_size = Column(String, nullable=True) shirt_size = Column(String, nullable=True)
accomodations = Column(String, nullable=True) accomodations = Column(String, nullable=True)
checked_in = Column(Boolean, nullable=False, default=False)
@login.user_loader @login.user_loader

View file

@ -145,3 +145,13 @@ form input[type="submit"] {
border-radius: 10px; border-radius: 10px;
border-color: #26a69a; border-color: #26a69a;
} }
form input[type="radio"] {
padding-right: 5px;
}
form label {
font-size: 1.1rem;
padding-right: 10px;
padding-left: 25px !important;
}

View file

@ -145,4 +145,12 @@ form {
border-radius: 10px; border-radius: 10px;
border-color: $color-accent; border-color: $color-accent;
} }
input[type="radio"] {
padding-right: 5px;
}
label {
font-size: 1.1rem;
padding-right: 10px;
padding-left: 25px !important;
}
} }

View file

@ -70,27 +70,18 @@
class="btn btn-lg btn-primary btn-invert">Discord</a> class="btn btn-lg btn-primary btn-invert">Discord</a>
</div> </div>
<div class="row center justify-content-center" style="background-color: #974355; padding: 20; margin-left: 20; margin-right: 20; border-radius: 5px;"> <div class="row center justify-content-center" style="background-color: #974355; padding: 20; margin-left: 20; margin-right: 20; border-radius: 5px;">
<form method="get" action="/shirtpost"> <form method="post">
{{ form.csrf_token }}
<br> <br>
<p><b>Optional Info:</b></p> <p><b>Optional Info:</b></p>
<div> <div>
<p>Shirt Size (Currently selected: {{shirt_size}})</p> <p>Shirt Size (Currently selected: {{current_user.shirt_size}})</p>
<input type="radio" id="shirtxs" name="size" value="xs"> {% for subfield in form.shirt_size %}
<label for="shirtxs">XS</label> {{subfield}}{{subfield.label}}
<input type="radio" id="shirts" name="size" value="s"> {% endfor %}
<label for="shirts">S</label>
<input type="radio" id="shirtm" name="size" value="m">
<label for="shirtm">M</label>
<input type="radio" id="shirtl" name="size" value="l">
<label for="shirtl">L</label>
<input type="radio" id="shirtxl" name="size" value="xl">
<label for="shirtxl">XL</label>
<input type="radio" id="shirtxxl" name="size" value="xxl">
<label for="shirtxxl">XXL</label>
<input type="radio" id="no" name="size" value="no">
<label for="no">Don't want one</label>
<p>Special Needs/Accommodations:</p> <p>Special Needs/Accommodations:</p>
<input type="text" name="special_needs" id="special_needs" value="{{ special_needs }}"> <input type="text" name="accomodations"
id="special_needs" value="{{ current_user.accomodations }}">
</div> </div>
<br><br> <br><br>
<input name="save" class="btn btn-lg btn-primary btn-invert" type="submit" value="Save"/> <input name="save" class="btn btn-lg btn-primary btn-invert" type="submit" value="Save"/>
@ -114,7 +105,7 @@
{% endif %} {% endif %}
<br> <br>
</div> </div>
{% if admin %} {% if current_user.is_admin %}
<br> <br>
<div class="row justify-content-center"> <div class="row justify-content-center">
<a href="/admin"><p class="btn">Admin Dashboard</p></a> <a href="/admin"><p class="btn">Admin Dashboard</p></a>

View file

@ -4,6 +4,7 @@
<head> <head>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link href="../static/css/materialize.min.css" rel="stylesheet">
{% assets 'scss' %} {% assets 'scss' %}
<link rel="stylesheet" type="text/css" href="{{ ASSET_URL }}"> <link rel="stylesheet" type="text/css" href="{{ ASSET_URL }}">
{% endassets %} {% endassets %}

View file

@ -0,0 +1,33 @@
"""empty message
Revision ID: 3f427be4ce8a
Revises: 55d77cdbbb49
Create Date: 2022-12-06 10:18:07.322064
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '3f427be4ce8a'
down_revision = '55d77cdbbb49'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('user', schema=None) as batch_op:
batch_op.add_column(sa.Column('checked_in', sa.Boolean(),
nullable=False, default=False))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('user', schema=None) as batch_op:
batch_op.drop_column('checked_in')
# ### end Alembic commands ###