fix w formularzu

This commit is contained in:
Mateusz Gruszczyński
2025-09-26 23:02:59 +02:00
parent 64ad6b4bbf
commit f7a99df93d

117
app.py
View File

@@ -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[]")