From f7a99df93d84c531defbc7f3102e0e493a1e5164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Gruszczy=C5=84ski?= Date: Fri, 26 Sep 2025 23:02:59 +0200 Subject: [PATCH] fix w formularzu --- app.py | 117 +++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 80 insertions(+), 37 deletions(-) diff --git a/app.py b/app.py index b64fdbf..0ff37dc 100644 --- a/app.py +++ b/app.py @@ -396,10 +396,10 @@ def formularz_zbiorek(zbiorka_id=None): if request.method == "POST": # Pola wspólne - nazwa = request.form.get("nazwa", "").strip() - opis = request.form.get("opis", "").strip() - numer_konta = request.form.get("numer_konta", "").strip() - numer_telefonu_blik = request.form.get("numer_telefonu_blik", "").strip() + nazwa = (request.form.get("nazwa", "") or "").strip() + opis = (request.form.get("opis", "") or "").strip() + numer_konta = (request.form.get("numer_konta", "") or "").strip() + numer_telefonu_blik = (request.form.get("numer_telefonu_blik", "") or "").strip() # Widoczność kwot i poszczególnych pasków postępu ukryj_kwote = "ukryj_kwote" in request.form @@ -407,44 +407,87 @@ def formularz_zbiorek(zbiorka_id=None): pokaz_postep_pozycje = "pokaz_postep_pozycje" in request.form pokaz_postep_kwotowo = "pokaz_postep_kwotowo" in request.form - # Cel — Decimal, > 0 + # Walidacja wymaganych pól tekstowych (zanim uderzymy w bazę) + if not nazwa: + flash("Nazwa jest wymagana", "danger") + temp_zb = zb or Zbiorka() + temp_zb.nazwa = nazwa + temp_zb.opis = opis + temp_zb.numer_konta = numer_konta + temp_zb.numer_telefonu_blik = numer_telefonu_blik + temp_zb.ukryj_kwote = ukryj_kwote + temp_zb.pokaz_postep_finanse = pokaz_postep_finanse + temp_zb.pokaz_postep_pozycje = pokaz_postep_pozycje + temp_zb.pokaz_postep_kwotowo = pokaz_postep_kwotowo + return render_template("admin/formularz_zbiorek.html", zbiorka=temp_zb, global_settings=global_settings) + + if not opis: + flash("Opis jest wymagany", "danger") + temp_zb = zb or Zbiorka() + temp_zb.nazwa = nazwa + temp_zb.opis = opis + temp_zb.numer_konta = numer_konta + temp_zb.numer_telefonu_blik = numer_telefonu_blik + temp_zb.ukryj_kwote = ukryj_kwote + temp_zb.pokaz_postep_finanse = pokaz_postep_finanse + temp_zb.pokaz_postep_pozycje = pokaz_postep_pozycje + temp_zb.pokaz_postep_kwotowo = pokaz_postep_kwotowo + return render_template("admin/formularz_zbiorek.html", zbiorka=temp_zb, global_settings=global_settings) + + if not numer_konta: + flash("Numer konta jest wymagany", "danger") + temp_zb = zb or Zbiorka() + temp_zb.nazwa = nazwa + temp_zb.opis = opis + temp_zb.numer_konta = numer_konta + temp_zb.numer_telefonu_blik = numer_telefonu_blik + temp_zb.ukryj_kwote = ukryj_kwote + temp_zb.pokaz_postep_finanse = pokaz_postep_finanse + temp_zb.pokaz_postep_pozycje = pokaz_postep_pozycje + temp_zb.pokaz_postep_kwotowo = pokaz_postep_kwotowo + return render_template("admin/formularz_zbiorek.html", zbiorka=temp_zb, global_settings=global_settings) + + if not numer_telefonu_blik: + flash("Numer telefonu BLIK jest wymagany", "danger") + temp_zb = zb or Zbiorka() + temp_zb.nazwa = nazwa + temp_zb.opis = opis + temp_zb.numer_konta = numer_konta + temp_zb.numer_telefonu_blik = numer_telefonu_blik + temp_zb.ukryj_kwote = ukryj_kwote + temp_zb.pokaz_postep_finanse = pokaz_postep_finanse + temp_zb.pokaz_postep_pozycje = pokaz_postep_pozycje + temp_zb.pokaz_postep_kwotowo = pokaz_postep_kwotowo + return render_template("admin/formularz_zbiorek.html", zbiorka=temp_zb, global_settings=global_settings) + + # Cel — Decimal, > 0; akceptuj przecinek i usuń spacje/nbsp + cel_raw = (request.form.get("cel", "") or "") + cel_norm = ( + cel_raw.replace(" ", "") + .replace("\u00A0", "") + .replace(",", ".") + .strip() + ) try: - cel_str = request.form.get("cel", "").replace(",", ".").strip() - cel = Decimal(cel_str) + if not cel_norm: + raise InvalidOperation + cel = Decimal(cel_norm) if cel <= Decimal("0"): raise InvalidOperation except (InvalidOperation, ValueError): flash("Podano nieprawidłową wartość dla celu zbiórki", "danger") - - # Przy błędzie celu odtwórz stan formularza (również przełączniki) - if is_edit and zb: - zb.nazwa = nazwa - zb.opis = opis - zb.numer_konta = numer_konta - zb.numer_telefonu_blik = numer_telefonu_blik - zb.ukryj_kwote = ukryj_kwote - zb.pokaz_postep_finanse = pokaz_postep_finanse - zb.pokaz_postep_pozycje = pokaz_postep_pozycje - zb.pokaz_postep_kwotowo = pokaz_postep_kwotowo - temp_zb = zb - else: - temp_zb = Zbiorka( - nazwa=nazwa, - opis=opis, - numer_konta=numer_konta, - numer_telefonu_blik=numer_telefonu_blik, - cel=None, - ukryj_kwote=ukryj_kwote, - pokaz_postep_finanse=pokaz_postep_finanse, - pokaz_postep_pozycje=pokaz_postep_pozycje, - pokaz_postep_kwotowo=pokaz_postep_kwotowo, - ) - - return render_template( - "admin/formularz_zbiorek.html", - zbiorka=temp_zb, - global_settings=global_settings, - ) + # Odtwórz stan formularza, ale nie używaj zbiorka.id w szablonie + temp_zb = zb or Zbiorka() + temp_zb.nazwa = nazwa + temp_zb.opis = opis + temp_zb.numer_konta = numer_konta + temp_zb.numer_telefonu_blik = numer_telefonu_blik + # cel pozostaw niewypełniony przy błędzie, aby input pokazał to co wpisał użytkownik + temp_zb.ukryj_kwote = ukryj_kwote + temp_zb.pokaz_postep_finanse = pokaz_postep_finanse + temp_zb.pokaz_postep_pozycje = pokaz_postep_pozycje + temp_zb.pokaz_postep_kwotowo = pokaz_postep_kwotowo + return render_template("admin/formularz_zbiorek.html", zbiorka=temp_zb, global_settings=global_settings) # Lista produktów names = request.form.getlist("item_nazwa[]")