Files
estus-shots-py/estusshots/views/players.py

71 lines
2.0 KiB
Python

from flask import render_template, request, redirect
from estusshots import app
from estusshots import forms, orm
from estusshots.util import authorize
from estusshots.orm import Player
@app.route("/player/new", methods=["GET"])
@authorize
def player_new():
form = forms.PlayerForm()
model = forms.GenericFormModel(
page_title="Players",
form_title="Create a new Player",
post_url="/player/null/edit",
)
return render_template("generic_form.html", model=model, form=form)
@app.route("/player/<player_id>/edit", methods=["GET", "POST"])
@authorize
def player_edit(player_id: int):
model = forms.GenericFormModel(
page_title="Players",
form_title=f"Edit Player",
post_url=f"/player/{player_id}/edit",
)
db = orm.new_session()
player = db.query(Player).filter(Player.id == player_id).first()
form = forms.PlayerForm()
# Edit Existing Player
if request.method == "GET":
form.player_id.data = player.id
form.anonymize.data = player.anon
form.real_name.data = player.real_name
form.alias.data = player.alias
form.hex_id.data = player.hex_id
model.form_title = f'Edit Player "{player.name}"'
return render_template("generic_form.html", model=model, form=form)
# Save POSTed data
else:
form = forms.PlayerForm()
if form.validate_on_submit():
if not player:
player = Player()
db.add(player)
player.populate_from_form(form)
db.commit()
return redirect("/player")
model.form_title = "Incorrect Data"
return render_template("generic_form.html", model=model, form=form)
@app.route("/player")
@authorize
def player_list():
db = orm.new_session()
players = db.query(Player)
model = {
"player_list": players,
"columns": [
("name", "Player Name"),
("alias", "Alias"),
("hex_id", "Hex ID"),
],
}
return render_template("player_list.html", model=model)