commit
6ba1313ea6
6 changed files with 65 additions and 4 deletions
2
.gitmodules
vendored
2
.gitmodules
vendored
|
@ -1,4 +1,4 @@
|
||||||
[submodule "goathacks/templates/home"]
|
[submodule "goathacks/templates/home"]
|
||||||
path = goathacks/templates/home
|
path = goathacks/templates/home
|
||||||
url = https://github.com/WPI-ACM/Hack-WPI-Static
|
url = https://github.com/WPI-ACM/Hack-WPI-Static
|
||||||
branch = 2023-dev
|
branch = master
|
||||||
|
|
|
@ -9,6 +9,8 @@ from goathacks.registration import bp
|
||||||
from goathacks import db, mail
|
from goathacks import db, mail
|
||||||
from goathacks.models import User
|
from goathacks.models import User
|
||||||
|
|
||||||
|
from tabulate import tabulate
|
||||||
|
|
||||||
gr = AppGroup("user")
|
gr = AppGroup("user")
|
||||||
|
|
||||||
@gr.command('create')
|
@gr.command('create')
|
||||||
|
@ -122,3 +124,56 @@ def drop_user(email, confirm):
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
click.echo(f"Dropped {user.first_name}'s registration")
|
click.echo(f"Dropped {user.first_name}'s registration")
|
||||||
|
|
||||||
|
@gr.command("list")
|
||||||
|
def list_users():
|
||||||
|
"""
|
||||||
|
Gets a list of all users
|
||||||
|
"""
|
||||||
|
users = User.query.all()
|
||||||
|
|
||||||
|
def make_table_content(user):
|
||||||
|
return [user.email, f"{user.first_name} {user.last_name}", user.waitlisted, user.is_admin]
|
||||||
|
|
||||||
|
table = map(make_table_content, users)
|
||||||
|
|
||||||
|
print(tabulate(table, headers=["Email", "Name", "Waitlisted", "Admin"]))
|
||||||
|
|
||||||
|
|
||||||
|
@gr.command("autopromote")
|
||||||
|
def autopromote_users():
|
||||||
|
"""
|
||||||
|
Runs through and automatically promotes users up to the waitlist limit
|
||||||
|
"""
|
||||||
|
WAITLIST_LIMIT = current_app.config['MAX_BEFORE_WAITLIST']
|
||||||
|
num_confirmed = db.session.query(User).filter(User.waitlisted == False).count()
|
||||||
|
click.echo(f"Got {num_confirmed} confirmed attendees")
|
||||||
|
num_waitlisted = db.session.query(User).filter(User.waitlisted == True).count()
|
||||||
|
click.echo(f"Got {num_waitlisted} waitlisted attendees")
|
||||||
|
|
||||||
|
num_to_promote = WAITLIST_LIMIT - num_confirmed
|
||||||
|
|
||||||
|
if num_to_promote > num_waitlisted:
|
||||||
|
num_to_promote = num_waitlisted
|
||||||
|
|
||||||
|
click.echo(f"About to promote {str(num_to_promote)} attendees from waitlist")
|
||||||
|
|
||||||
|
users = db.session.query(User).filter(User.waitlisted == True).all()
|
||||||
|
|
||||||
|
num_promoted = 0
|
||||||
|
num_to_promote_orig = num_to_promote
|
||||||
|
|
||||||
|
for u in users:
|
||||||
|
if num_to_promote > 0:
|
||||||
|
click.echo(f"Attempting to promote {u.email} ({u.id})")
|
||||||
|
u.waitlisted = False
|
||||||
|
db.session.commit()
|
||||||
|
msg = Message("Waitlist Promotion")
|
||||||
|
msg.add_recipient(u.email)
|
||||||
|
msg.sender = ("GoatHacks Team", "hack@wpi.edu")
|
||||||
|
msg.body = render_template("emails/waitlist_promotion.txt", user=u)
|
||||||
|
mail.send(msg)
|
||||||
|
num_promoted += 1
|
||||||
|
num_to_promote -= 1
|
||||||
|
|
||||||
|
click.echo(f"Promoted {num_promoted}/{num_to_promote_orig} attendees off the waitlist!")
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,8 @@ SECRET_KEY="bad-key-change-me"
|
||||||
|
|
||||||
UPLOAD_FOLDER="./uploads/"
|
UPLOAD_FOLDER="./uploads/"
|
||||||
|
|
||||||
|
DISCORD_LINK=None
|
||||||
|
|
||||||
|
|
||||||
# Mail settings
|
# Mail settings
|
||||||
MAIL_SERVER="localhost"
|
MAIL_SERVER="localhost"
|
||||||
|
|
|
@ -30,10 +30,13 @@
|
||||||
Forgot to upload your resume while registering? No worries, submit it below.
|
Forgot to upload your resume while registering? No worries, submit it below.
|
||||||
</div>
|
</div>
|
||||||
<div class="row center justify-content-center">
|
<div class="row center justify-content-center">
|
||||||
|
{% if config['DISCORD_LINK'] is defined %}
|
||||||
<h5>Make sure to join the Discord and enter your shirt size below!</h5>
|
<h5>Make sure to join the Discord and enter your shirt size below!</h5>
|
||||||
<p>(Please note that due to COVID-19 constraints, we can't guarantee that all participants will receive Hack@WPI t-shirts this year but we are trying to find a way!)</p>
|
<a href="{{ config['DISCORD_LINK'] }}" style="margin: 5px;"
|
||||||
<a href="https://discord.gg/G3pseHPRNv" style="margin: 5px;"
|
|
||||||
class="btn btn-lg btn-primary btn-invert">Discord</a>
|
class="btn btn-lg btn-primary btn-invert">Discord</a>
|
||||||
|
{% else %}
|
||||||
|
<h5>Our discord is still under construction! We'll send out an email when it's ready.</h5>
|
||||||
|
{% endif %}
|
||||||
</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="post">
|
<form method="post">
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit fba594664faeb8b6056462a0f8bc79a0d21a3768
|
Subproject commit e0fb69c0be54c6cce7391ccb86a9bf14b80f432b
|
|
@ -23,3 +23,4 @@ uWSGI==2.0.21
|
||||||
Werkzeug==2.2.2
|
Werkzeug==2.2.2
|
||||||
WTForms==3.0.1
|
WTForms==3.0.1
|
||||||
ulid
|
ulid
|
||||||
|
tabulate
|
||||||
|
|
Loading…
Add table
Reference in a new issue