funckja niekupione
This commit is contained in:
@@ -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
29
app.py
@@ -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
|
||||||
|
@@ -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">
|
||||||
|
Reference in New Issue
Block a user