zmiany uxowe w panelu

This commit is contained in:
Mateusz Gruszczyński
2025-10-01 21:16:45 +02:00
parent 08b680f030
commit 365791cd35
6 changed files with 111 additions and 49 deletions

32
app.py
View File

@@ -3720,10 +3720,10 @@ def recalculate_filesizes_all():
return redirect(url_for("admin_receipts", id="all"))
@app.route("/admin/mass_edit_categories", methods=["GET", "POST"])
@app.route("/admin/edit_categories", methods=["GET", "POST"])
@login_required
@admin_required
def admin_mass_edit_categories():
def admin_edit_categories():
page, per_page = get_page_args(default_per_page=50, max_per_page=200)
lists_query = ShoppingList.query.options(
@@ -3752,13 +3752,13 @@ def admin_mass_edit_categories():
db.session.commit()
flash("Zaktualizowano kategorie dla wybranych list", "success")
return redirect(
url_for("admin_mass_edit_categories", page=page, per_page=per_page)
url_for("admin_edit_categories", page=page, per_page=per_page)
)
query_string = urlencode({k: v for k, v in request.args.items() if k != "page"})
return render_template(
"admin/mass_edit_categories.html",
"admin/edit_categories.html",
lists=lists,
categories=categories,
page=page,
@@ -3768,6 +3768,30 @@ def admin_mass_edit_categories():
query_string=query_string,
)
@app.route("/admin/edit_categories/<int:list_id>/save", methods=["POST"])
@login_required
@admin_required
def admin_edit_categories_save(list_id):
l = db.session.get(ShoppingList, list_id)
if not l:
return jsonify(ok=False, error="not_found"), 404
data = request.get_json(silent=True) or {}
ids = data.get("category_ids", [])
try:
ids = [int(x) for x in ids]
except (TypeError, ValueError):
return jsonify(ok=False, error="bad_ids"), 400
l.categories.clear()
if ids:
cats = Category.query.filter(Category.id.in_(ids)).all()
l.categories.extend(cats)
db.session.commit()
return jsonify(ok=True, count=len(l.categories)), 200
@app.route("/admin/list_items/<int:list_id>")
@login_required