cleaned up some code

This commit is contained in:
eclipse 2025-05-08 09:45:56 +02:00
parent ab014d8c66
commit 0fe1c54d9d

View File

@ -1,6 +1,5 @@
from flask import Blueprint, render_template, request, redirect, flash, url_for from flask import Blueprint, render_template, request, redirect, flash, url_for
from sqlalchemy import select, insert, update, delete from sqlalchemy import select, insert, update, delete
from sqlalchemy.orm import joinedload
from the_works.database import db from the_works.database import db
from the_works.models import Text, Reihe, Sprache, Textform, Text_Genre, Genre from the_works.models import Text, Reihe, Sprache, Textform, Text_Genre, Genre
@ -10,7 +9,7 @@ bp = Blueprint("text", __name__)
@bp.route("/text/all") @bp.route("/text/all")
def all(): def all():
# select all rows from table "Text", ORM style # select all rows from table "Text", ORM style
rows = db.session.execute(select(Text, Reihe, Textform, Sprache).join(Text.reihe, isouter=True).join(Text.textform, isouter=True).join(Text.sprache, isouter=True).options(joinedload(Text.text_genre))).unique() rows = db.session.execute(select(Text, Reihe, Textform, Sprache).join(Text.reihe, isouter=True).join(Text.textform, isouter=True).join(Text.sprache, isouter=True))
# condense result into list of dicts # condense result into list of dicts
texte = [] texte = []
for row in rows.all(): for row in rows.all():
@ -24,8 +23,8 @@ def all():
"tf_id": row.Text.Textform, "tf_id": row.Text.Textform,
"Sprache": row.Sprache.Sprache, "Sprache": row.Sprache.Sprache,
"s_id": row.Text.Sprache, "s_id": row.Text.Sprache,
"Genre_list": map(lambda tg: tg.genre.Genre, row.Text.text_genre) if row.Text.text_genre else [], "Genre_list": [tg.genre.Genre for tg in row.Text.text_genre],
"g_id_list": map(lambda tg: tg.Genre, row.Text.text_genre) if row.Text.text_genre else [] "g_id_list": row.Text.genres
}) })
return render_template("views/text.html", texte=texte) return render_template("views/text.html", texte=texte)
@ -43,7 +42,7 @@ def read(id):
"Reihe": t.Reihe or "", "Reihe": t.Reihe or "",
"Textform": t.Textform, "Textform": t.Textform,
"Sprache": t.Sprache, "Sprache": t.Sprache,
"Genres": t.genres or [] "Genres": t.genres
} }
return render_template("views/text_detail.html", text=text, reihen=db.session.scalars(select(Reihe)), textformen=db.session.scalars(select(Textform)), sprachen=db.session.scalars(select(Sprache)), genres=db.session.scalars(select(Genre))) return render_template("views/text_detail.html", text=text, reihen=db.session.scalars(select(Reihe)), textformen=db.session.scalars(select(Textform)), sprachen=db.session.scalars(select(Sprache)), genres=db.session.scalars(select(Genre)))
@ -67,18 +66,21 @@ def create():
def update(id): def update(id):
# get record # get record
text = db.session.get(Text, id) text = db.session.get(Text, id)
# update values # update values
text.Titel = request.form["form_Titel"] text.Titel = request.form["form_Titel"]
text.Untertitel = request.form["form_Untertitel"] or None text.Untertitel = request.form["form_Untertitel"] or None
text.Reihe = request.form["form_Reihe"] or None text.Reihe = request.form["form_Reihe"] or None
text.Textform = request.form["form_Textform"] text.Textform = request.form["form_Textform"]
text.Sprache = request.form["form_Sprache"] text.Sprache = request.form["form_Sprache"]
# update genre list by removing genres not in form selection and adding selected ones not currently in list # update genre list by removing genres not in form selection and adding selected ones not currently in list
form_set = set(map(lambda g: int(g), request.form.getlist("form_Genres"))) form_set = set(map(lambda g: int(g), request.form.getlist("form_Genres")))
for g in set(text.genres) - form_set: for g in set(text.genres) - form_set:
text.genres.remove(g) text.genres.remove(g)
for g in form_set - set(text.genres): for g in form_set - set(text.genres):
text.genres.append(g) text.genres.append(g)
# commit changes # commit changes
db.session.commit() db.session.commit()
flash("Eintrag erfolgreich geändert") flash("Eintrag erfolgreich geändert")