funckja niekupione

This commit is contained in:
Mateusz Gruszczyński
2025-07-15 23:05:21 +02:00
parent 3b94f93892
commit 4ef183e2a9
3 changed files with 67 additions and 6 deletions

View File

@@ -31,3 +31,6 @@ ALTER TABLE item ADD COLUMN quantity INTEGER DEFAULT 1;
#licznik najczesciej kupowanych reczy #licznik najczesciej kupowanych reczy
ALTER TABLE suggested_product ADD COLUMN usage_count INTEGER DEFAULT 0; ALTER TABLE suggested_product ADD COLUMN usage_count INTEGER DEFAULT 0;
#funkcja niekupione
ALTER TABLE item ADD COLUMN not_purchased_reason TEXT;
ALTER TABLE item ADD COLUMN not_purchased BOOLEAN DEFAULT 0;

29
app.py
View File

@@ -1186,7 +1186,33 @@ def edit_list(list_id):
flash("Nie znaleziono produktu", "danger") flash("Nie znaleziono produktu", "danger")
return redirect(url_for("edit_list", list_id=list_id)) return redirect(url_for("edit_list", list_id=list_id))
# Przekazanie receipts do szablonu elif action == "mark_not_purchased":
item_id = request.form.get("item_id")
item = Item.query.get(item_id)
if item and item.list_id == list_id:
item.not_purchased = True
item.purchased = False
item.purchased_at = None
db.session.commit()
flash("Oznaczono produkt jako niekupione", "success")
else:
flash("Nie znaleziono produktu", "danger")
return redirect(url_for("edit_list", list_id=list_id))
elif action == "unmark_not_purchased":
item_id = request.form.get("item_id")
item = Item.query.get(item_id)
if item and item.list_id == list_id:
item.not_purchased = False
item.not_purchased_reason = None
item.purchased = False
item.purchased_at = None
db.session.commit()
flash("Przywrócono produkt do listy", "success")
else:
flash("Nie znaleziono produktu", "danger")
return redirect(url_for("edit_list", list_id=list_id))
return render_template( return render_template(
"admin/edit_list.html", "admin/edit_list.html",
list=l, list=l,
@@ -1198,6 +1224,7 @@ def edit_list(list_id):
) )
@app.route("/admin/products") @app.route("/admin/products")
@login_required @login_required
@admin_required @admin_required

View File

@@ -88,21 +88,52 @@
<td> <td>
{% if item.purchased %} {% if item.purchased %}
<span class="badge bg-success">✔️ Kupiony</span> <span class="badge bg-success">✔️ Kupiony</span>
{% elif item.not_purchased %}
<span class="badge bg-warning text-dark">⚠️ Nie kupione</span>
{% else %} {% else %}
<span class="badge bg-secondary">Nieoznaczony</span> <span class="badge bg-secondary">Nieoznaczony</span>
{% endif %} {% endif %}
</td> </td>
<td> <td>
<form method="post" action="{{ url_for('edit_list', list_id=list.id) }}" class="d-inline"> <form method="post" action="{{ url_for('edit_list', list_id=list.id) }}" class="d-grid gap-1">
<input type="hidden" name="action" value="toggle_purchased">
<input type="hidden" name="item_id" value="{{ item.id }}">
{% if not item.not_purchased %}
<form method="post" action="{{ url_for('edit_list', list_id=list.id) }}" class="d-grid gap-1">
<input type="hidden" name="action" value="toggle_purchased"> <input type="hidden" name="action" value="toggle_purchased">
<input type="hidden" name="item_id" value="{{ item.id }}"> <input type="hidden" name="item_id" value="{{ item.id }}">
{% if item.purchased %} {% if item.purchased %}
<button type="submit" class="btn btn-outline-warning btn-sm w-100">🚫 Odznacz</button> <button type="submit" class="btn btn-outline-warning btn-sm">🚫 Odznacz</button>
{% else %} {% else %}
<button type="submit" class="btn btn-outline-success btn-sm w-100">✅ Oznacz</button> <button type="submit" class="btn btn-outline-success btn-sm">✅ Oznacz</button>
{% endif %} {% endif %}
</form> </form>
{% endif %}
</form>
<form method="post" action="{{ url_for('edit_list', list_id=list.id) }}" class="d-grid gap-1 mt-1">
<input type="hidden" name="action" value="mark_not_purchased">
<input type="hidden" name="item_id" value="{{ item.id }}">
<button type="submit" class="btn btn-outline-warning btn-sm">⚠️ Nie kupione</button>
</form>
{% if item.not_purchased %}
<form method="post" action="{{ url_for('edit_list', list_id=list.id) }}" class="d-grid gap-1 mt-3 border-top pt-2">
<input type="hidden" name="action" value="unmark_not_purchased">
<input type="hidden" name="item_id" value="{{ item.id }}">
<button type="submit" class="btn btn-outline-success btn-sm">✅ Przywróć na liste</button>
</form>
{% if item.not_purchased_reason %}
<div class="mt-2 text-warning small border-top pt-2">
<strong>Powód:</strong> {{ item.not_purchased_reason }}
</div>
{% endif %}
{% endif %}
</td> </td>
<td> <td>
<form method="post" action="{{ url_for('edit_list', list_id=list.id) }}" class="d-inline"> <form method="post" action="{{ url_for('edit_list', list_id=list.id) }}" class="d-inline">
<input type="hidden" name="action" value="delete_item"> <input type="hidden" name="action" value="delete_item">