started work on view "read" (detailed view of single Werk)
This commit is contained in:
parent
6f3c0c9975
commit
24488bb86d
51
the_works/templates/views/werk_read.html
Normal file
51
the_works/templates/views/werk_read.html
Normal file
@ -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"] %}
|
||||
<article>
|
||||
<form method="post" action="{{ url_for('werk.update', id=ID) }}" readonly>
|
||||
<fieldset disabled="disabled">
|
||||
<label>
|
||||
Titel (erforderlich)
|
||||
<input id="form_Titel" name="form_Titel" aria-label="Titel" placeholder="Titel" value="{{ werk['Titel'] }}" required />
|
||||
</label>
|
||||
<label>
|
||||
Untertitel
|
||||
<input id="form_Untertitel" name="form_Untertitel" aria-label="Untertitel" placeholder="Untertitel" value="{{ werk['Untertitel'] }}" />
|
||||
</label>
|
||||
<label>
|
||||
Verlag
|
||||
<select id="form_Verlag" name="form_Verlag" aria-label="Verlag">
|
||||
<option value=""{% if werk['v_id'] == '' %} selected{% endif %}>kein Verlag</option>
|
||||
{% for v in verlage %}<option value="{{ v.ID }}"{% if werk['v_id'] == v.ID %} selected{% endif %}>{{ v.Verlag }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
Werksform
|
||||
<select id="form_Werksform" name="form_Werksform" aria-label="Werksform">
|
||||
<option value=""{% if werk['wf_id'] == '' %} selected{% endif %}>keine Werksform</option>
|
||||
{% for wf in werksformen %}<option value="{{ wf.ID }}"{% if werk['wf_id'] == wf.ID %} selected{% endif %}>{{ wf.Werksform }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
Reihe
|
||||
<select id="form_Reihe" name="form_Reihe" aria-label="Der Text gehört zur Reihe …">
|
||||
<option value="" {% if werk['r_id'] == "" %}selected{% endif %}>keine Reihe</option>
|
||||
{% for r in reihen %}<option value="{{ r.ID }}" {% if werk['r_id'] == r.ID %}selected{% endif %}>{{ r.Titel }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
Reihennummer
|
||||
<input id="form_Reihennummer" name="form_Reihennummer" aria-label="Reihennummer" placeholder="keine Reihennummer" value="{{ werk['Reihennummer'] }}" />
|
||||
</label>
|
||||
</fieldset>
|
||||
</form>
|
||||
</article>
|
||||
{% endblock content %}
|
||||
@ -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/<int:id>")
|
||||
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():
|
||||
|
||||
Loading…
Reference in New Issue
Block a user