fix w dodawaniu zbiórki
This commit is contained in:
37
app.py
37
app.py
@@ -396,11 +396,16 @@ def formularz_zbiorek(zbiorka_id=None):
|
||||
flash("Brak uprawnień", "danger")
|
||||
return redirect(url_for("index"))
|
||||
|
||||
# Tryb
|
||||
# Tryb: dodawanie vs edycja
|
||||
is_edit = zbiorka_id is not None
|
||||
zb = db.session.get(Zbiorka, zbiorka_id)
|
||||
if zb is None:
|
||||
abort(404)
|
||||
|
||||
# Obiekt zbiórki ładujemy TYLKO przy edycji
|
||||
zb = None
|
||||
if is_edit:
|
||||
zb = db.session.get(Zbiorka, zbiorka_id)
|
||||
if zb is None:
|
||||
abort(404)
|
||||
|
||||
global_settings = GlobalSettings.query.first()
|
||||
|
||||
if request.method == "POST":
|
||||
@@ -408,11 +413,10 @@ def formularz_zbiorek(zbiorka_id=None):
|
||||
nazwa = request.form.get("nazwa", "").strip()
|
||||
opis = request.form.get("opis", "").strip()
|
||||
|
||||
# IBAN/telefon — oczyść z nadmiarowych znaków odstępu (zostaw spacje w prezentacji frontu)
|
||||
numer_konta = request.form.get("numer_konta", "").strip()
|
||||
numer_telefonu_blik = request.form.get("numer_telefonu_blik", "").strip()
|
||||
|
||||
# Cel — walidacja liczby (Decimal, nie float)
|
||||
# Cel — Decimal, > 0
|
||||
try:
|
||||
cel_str = request.form.get("cel", "").replace(",", ".").strip()
|
||||
cel = Decimal(cel_str)
|
||||
@@ -420,18 +424,18 @@ def formularz_zbiorek(zbiorka_id=None):
|
||||
raise InvalidOperation
|
||||
except (InvalidOperation, ValueError):
|
||||
flash("Podano nieprawidłową wartość dla celu zbiórki", "danger")
|
||||
# render z dotychczasowo wpisanymi danymi (w trybie dodawania tworzymy tymczasowy obiekt)
|
||||
temp_zb = zb or Zbiorka(
|
||||
# Utwórz tymczasowy obiekt do ponownego renderu formularza
|
||||
temp_zb = (zb or Zbiorka(
|
||||
nazwa=nazwa,
|
||||
opis=opis,
|
||||
numer_konta=numer_konta,
|
||||
numer_telefonu_blik=numer_telefonu_blik,
|
||||
cel=None,
|
||||
ukryj_kwote=("ukryj_kwote" in request.form),
|
||||
)
|
||||
))
|
||||
return render_template(
|
||||
"admin/formularz_zbiorek.html",
|
||||
zbiorka=temp_zb if is_edit else None if zb is None else temp_zb,
|
||||
zbiorka=temp_zb,
|
||||
global_settings=global_settings,
|
||||
)
|
||||
|
||||
@@ -460,13 +464,12 @@ def formularz_zbiorek(zbiorka_id=None):
|
||||
zb.opis = opis
|
||||
zb.numer_konta = numer_konta
|
||||
zb.numer_telefonu_blik = numer_telefonu_blik
|
||||
zb.cel = cel # ❗ bez float(cel) — zostaje Decimal
|
||||
zb.cel = cel # pozostaje Decimal
|
||||
zb.ukryj_kwote = ukryj_kwote
|
||||
db.session.commit() # najpierw zapisz bazowe pola
|
||||
db.session.commit() # zapisz bazowe pola
|
||||
|
||||
# Nadpisz listę produktów (czyść i dodaj od nowa dla prostoty)
|
||||
zb.przedmioty.clear()
|
||||
|
||||
for i, raw_name in enumerate(names):
|
||||
name = (raw_name or "").strip()
|
||||
if not name:
|
||||
@@ -479,7 +482,7 @@ def formularz_zbiorek(zbiorka_id=None):
|
||||
zbiorka_id=zb.id,
|
||||
nazwa=name,
|
||||
link=link,
|
||||
cena=cena_val, # Decimal albo None
|
||||
cena=cena_val,
|
||||
kupione=kupione_val
|
||||
))
|
||||
|
||||
@@ -493,11 +496,11 @@ def formularz_zbiorek(zbiorka_id=None):
|
||||
opis=opis,
|
||||
numer_konta=numer_konta,
|
||||
numer_telefonu_blik=numer_telefonu_blik,
|
||||
cel=cel, # ❗ Decimal
|
||||
cel=cel, # Decimal
|
||||
ukryj_kwote=ukryj_kwote,
|
||||
)
|
||||
db.session.add(nowa)
|
||||
db.session.commit() # potrzebujemy ID nowej zbiórki
|
||||
db.session.commit() # potrzebne ID
|
||||
|
||||
# Dodaj produkty do nowej zbiórki
|
||||
for i, raw_name in enumerate(names):
|
||||
@@ -512,7 +515,7 @@ def formularz_zbiorek(zbiorka_id=None):
|
||||
zbiorka_id=nowa.id,
|
||||
nazwa=name,
|
||||
link=link,
|
||||
cena=cena_val, # Decimal albo None
|
||||
cena=cena_val,
|
||||
kupione=kupione_val
|
||||
))
|
||||
|
||||
|
Reference in New Issue
Block a user