parsowanie kwot
This commit is contained in:
41
app.py
41
app.py
@@ -239,6 +239,22 @@ def to_local(dt):
|
||||
return dt.astimezone(LOCAL_TZ)
|
||||
|
||||
|
||||
def parse_amount(raw: str) -> Decimal:
|
||||
if not raw or not str(raw).strip():
|
||||
raise InvalidOperation("empty amount")
|
||||
norm = (
|
||||
str(raw)
|
||||
.replace(" ", "")
|
||||
.replace("\u00A0", "")
|
||||
.replace(",", ".")
|
||||
.strip()
|
||||
)
|
||||
d = Decimal(norm)
|
||||
if d <= 0:
|
||||
raise InvalidOperation("amount must be > 0")
|
||||
return d
|
||||
|
||||
|
||||
@app.template_filter("dt")
|
||||
def dt_filter(dt, fmt="%Y-%m-%d %H:%M"):
|
||||
try:
|
||||
@@ -458,13 +474,9 @@ def formularz_zbiorek(zbiorka_id=None):
|
||||
return render_template("admin/formularz_zbiorek.html", zbiorka=_temp_obj(), global_settings=global_settings)
|
||||
|
||||
# Cel > 0
|
||||
cel_raw = (request.form.get("cel", "") or "")
|
||||
cel_norm = cel_raw.replace(" ", "").replace("\u00A0", "").replace(",", ".").strip()
|
||||
try:
|
||||
if not cel_norm:
|
||||
raise InvalidOperation
|
||||
cel = Decimal(cel_norm)
|
||||
if cel <= Decimal("0"):
|
||||
cel = parse_amount(request.form.get("cel"))
|
||||
if cel <= 0:
|
||||
raise InvalidOperation
|
||||
except (InvalidOperation, ValueError):
|
||||
flash("Podano nieprawidłową wartość dla celu zbiórki", "danger")
|
||||
@@ -476,12 +488,9 @@ def formularz_zbiorek(zbiorka_id=None):
|
||||
prices = request.form.getlist("item_cena[]")
|
||||
|
||||
def _read_price(val: str):
|
||||
if not val or not val.strip():
|
||||
return None
|
||||
try:
|
||||
d = Decimal(val.replace(",", "."))
|
||||
return d if d >= 0 else None
|
||||
except Exception:
|
||||
return parse_amount(val)
|
||||
except InvalidOperation:
|
||||
return None
|
||||
|
||||
# Zapis
|
||||
@@ -578,7 +587,7 @@ def dodaj_wplate(zbiorka_id):
|
||||
|
||||
if request.method == "POST":
|
||||
try:
|
||||
kwota = Decimal(request.form.get("kwota", "").replace(",", "."))
|
||||
kwota = parse_amount(request.form.get("kwota"))
|
||||
if kwota <= 0:
|
||||
raise InvalidOperation
|
||||
except (InvalidOperation, ValueError):
|
||||
@@ -623,7 +632,7 @@ def edytuj_stan(zbiorka_id):
|
||||
abort(404)
|
||||
if request.method == "POST":
|
||||
try:
|
||||
nowy_stan = Decimal(request.form.get("stan", "").replace(",", "."))
|
||||
nowy_stan = parse_amount(request.form.get("stan"))
|
||||
except (InvalidOperation, ValueError):
|
||||
flash("Nieprawidłowa wartość kwoty", "danger")
|
||||
return redirect(url_for("edytuj_stan", zbiorka_id=zbiorka_id))
|
||||
@@ -781,7 +790,7 @@ def dodaj_wydatek(zbiorka_id):
|
||||
|
||||
if request.method == "POST":
|
||||
try:
|
||||
kwota = Decimal(request.form.get("kwota", "").replace(",", "."))
|
||||
kwota = parse_amount(request.form.get("kwota"))
|
||||
if kwota <= 0:
|
||||
raise InvalidOperation
|
||||
except (InvalidOperation, ValueError):
|
||||
@@ -892,7 +901,7 @@ def zapisz_wplate(wplata_id):
|
||||
abort(404)
|
||||
zb = w.zbiorka
|
||||
try:
|
||||
nowa_kwota = Decimal(request.form.get("kwota", "").replace(",", "."))
|
||||
nowa_kwota = parse_amount(request.form.get("kwota"))
|
||||
if nowa_kwota <= 0:
|
||||
raise InvalidOperation
|
||||
except (InvalidOperation, ValueError):
|
||||
@@ -978,7 +987,7 @@ def zapisz_wydatek(wydatek_id):
|
||||
abort(404)
|
||||
zb = x.zbiorka
|
||||
try:
|
||||
nowa_kwota = Decimal(request.form.get("kwota", "").replace(",", "."))
|
||||
nowa_kwota = parse_amount(request.form.get("kwota"))
|
||||
if nowa_kwota <= 0:
|
||||
raise InvalidOperation
|
||||
except (InvalidOperation, ValueError):
|
||||
|
||||
Reference in New Issue
Block a user