73 lines
2.4 KiB
Python
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"))
|