From 0fe1c54d9d3d13af42291fa6feb0c84212fe6f2d Mon Sep 17 00:00:00 2001 From: eclipse Date: Thu, 8 May 2025 09:45:56 +0200 Subject: [PATCH] cleaned up some code --- the_works/views/text.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/the_works/views/text.py b/the_works/views/text.py index 1c92724..75bef32 100644 --- a/the_works/views/text.py +++ b/the_works/views/text.py @@ -1,6 +1,5 @@ from flask import Blueprint, render_template, request, redirect, flash, url_for from sqlalchemy import select, insert, update, delete -from sqlalchemy.orm import joinedload from the_works.database import db from the_works.models import Text, Reihe, Sprache, Textform, Text_Genre, Genre @@ -10,7 +9,7 @@ bp = Blueprint("text", __name__) @bp.route("/text/all") def all(): # 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 texte = [] for row in rows.all(): @@ -24,8 +23,8 @@ def all(): "tf_id": row.Text.Textform, "Sprache": row.Sprache.Sprache, "s_id": row.Text.Sprache, - "Genre_list": map(lambda tg: tg.genre.Genre, row.Text.text_genre) if row.Text.text_genre else [], - "g_id_list": map(lambda tg: tg.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": row.Text.genres }) return render_template("views/text.html", texte=texte) @@ -43,7 +42,7 @@ def read(id): "Reihe": t.Reihe or "", "Textform": t.Textform, "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))) @@ -67,18 +66,21 @@ def create(): def update(id): # get record text = db.session.get(Text, id) + # update values text.Titel = request.form["form_Titel"] text.Untertitel = request.form["form_Untertitel"] or None text.Reihe = request.form["form_Reihe"] or None text.Textform = request.form["form_Textform"] text.Sprache = request.form["form_Sprache"] + # 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"))) for g in set(text.genres) - form_set: text.genres.remove(g) for g in form_set - set(text.genres): text.genres.append(g) + # commit changes db.session.commit() flash("Eintrag erfolgreich geƤndert")