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