diff --git a/the_works/templates/views/werk_read.html b/the_works/templates/views/werk_read.html
new file mode 100644
index 0000000..b9dcb53
--- /dev/null
+++ b/the_works/templates/views/werk_read.html
@@ -0,0 +1,51 @@
+{% extends 'base.html' %}
+
+{% block title %}"{{ werk["Titel"] }}" – Detailansicht"{% endblock title %}
+
+{% block heading %}"{{ werk["Titel"] }}" – Detailansicht{% endblock heading %}
+
+{% block content %}
+{% set ID = werk["id"] %}
+
+
+
+{% endblock content %}
diff --git a/the_works/views/werk.py b/the_works/views/werk.py
index 8650e8b..820be27 100644
--- a/the_works/views/werk.py
+++ b/the_works/views/werk.py
@@ -5,19 +5,16 @@ from the_works.models import Werk, Reihe, Verlag, Werksform
bp = Blueprint("werk", __name__)
+# ORM equivalent of SQL statement to select all Werk entries
+read_statement = select(Werk, Reihe, Verlag, Werksform).join(Werk.reihe, isouter=True).join(Werk.verlag, isouter=True).join(Werk.werksform, isouter=True)
+
+
@bp.route("/werk")
@bp.route("/werk/all")
def all():
- # 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):
+ for row in db.session.execute(read_statement):
werke.append({
"id": row.Werk.ID,
"Titel": row.Werk.Titel,
@@ -30,9 +27,21 @@ def all():
@bp.route("/werk/read/")
-def read():
- werk = db.session.get(Werk, id)
- return render_template("views/werk_read.html", werk=werk)
+def read(id):
+ row = db.session.execute(read_statement.where(Werk.ID == id)).one()
+ werk = {
+ "id": row.Werk.ID,
+ "Titel": row.Werk.Titel,
+ "Untertitel": row.Werk.Untertitel or "",
+ "Reihe": row.Reihe.Titel if row.Reihe else "",
+ "r_id": row.Reihe.ID if row.Reihe else "",
+ "Verlag": row.Verlag.Verlag if row.Verlag else "",
+ "v_id": row.Verlag.ID if row.Verlag else "",
+ "Werksform": row.Werksform.Werksform if row.Werksform else "",
+ "wf_id": row.Werksform.ID if row.Werksform else "",
+ "Reihennummer": row.Werk.Reihennummer or "",
+ }
+ return render_template("views/werk_read.html", werk=werk, 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():