the_works/the_works/views/werk.py

73 lines
2.4 KiB
Python

from flask import Blueprint, render_template, request, redirect, flash, url_for
from sqlalchemy import select, insert, update, delete
from the_works.database import db
from the_works.models import Werk, Reihe, Verlag, Werksform
bp = Blueprint("werk", __name__)
@bp.route("/werk/all")
@bp.route("/werk")
def read():
# build ORM equivalent of SELECT statement
stmt = (
select(Werk, Reihe, Verlag, Werksform)
.join(Werk.reihe, isouter=True)
.join(Werk.verlag, isouter=True)
.join(Werk.werksform, isouter=True)
)
# condense result into list of dicts
werke = []
for row in db.session.execute(stmt):
werke.append({
"id": row.Werk.ID,
"titel": row.Werk.Titel,
"untertitel": row.Werk.Untertitel or "",
"reihe": row.Reihe.Titel if row.Reihe else "",
"r_id": str(row.Reihe.ID) if row.Reihe else "",
"verlag": row.Verlag.Verlag if row.Verlag else "",
"v_id": str(row.Verlag.ID) if row.Verlag else "",
"werksform": row.Werksform.Werksform if row.Werksform else "",
"wf_id": str(row.Werksform.ID) if row.Werksform else ""
})
return render_template("views/werk.html", werke=werke, reihen=db.session.scalars(select(Reihe)), verlage=db.session.scalars(select(Verlag)), werksformen=db.session.scalars(select(Werksform)))
@bp.route("/werk/create", methods=["POST"])
def create():
"""db.session.add(Text(
Titel = request.form["text_titel"],
Untertitel = request.form["text_untertitel"] or None,
Reihe = request.form["text_reihe"] or None,
Textform = request.form["text_textform"],
Sprache = request.form["text_sprache"]
))
db.session.commit()
flash("Eintrag erfolgreich hinzugefügt")
"""
return redirect(url_for("werk.read"))
@bp.route("/werk/update/<int:id>", methods=["POST"])
def update(id):
"""# get record
text = db.session.get(Text, id)
# update values
text.Titel = request.form["text_titel"]
text.Untertitel = request.form["text_untertitel"] or None
text.Reihe = request.form["text_reihe"] or None
text.Textform = request.form["text_textform"]
text.Sprache = request.form["text_sprache"]
# commit changes
db.session.commit()
flash("Eintrag erfolgreich geändert")
"""
return redirect(url_for("werk.read"))
@bp.route("/werk/delete/<int:id>")
def delete(id):
""" text = db.session.get(Text, id)
db.session.delete(text)
db.session.commit()
flash("Eintrag erfolgreich gelöscht")
"""
return redirect(url_for("werk.read"))