Rewrite data layer using SqlAlchemy Part 1
This commit is contained in:
71
estusshots/views/players.py
Normal file
71
estusshots/views/players.py
Normal file
@@ -0,0 +1,71 @@
|
||||
from flask import render_template, request, redirect
|
||||
|
||||
from estusshots import app
|
||||
from estusshots import forms, models, 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 = models.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 = models.GenericFormModel(
|
||||
page_title="Players",
|
||||
form_title=f"Edit Player",
|
||||
post_url=f"/player/{player_id}/edit",
|
||||
)
|
||||
# Edit Existing Player
|
||||
if request.method == "GET":
|
||||
db = orm.new_session()
|
||||
player = db.query(Player).filter(Player.id == player_id).first()
|
||||
|
||||
form = forms.PlayerForm()
|
||||
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():
|
||||
db = orm.new_session()
|
||||
player = db.query(Player).filter(Player.id == player_id).first()
|
||||
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)
|
||||
Reference in New Issue
Block a user