Add search and bulk delete items

This commit is contained in:
2026-08-29 07:24:33 +03:00
parent ade6a0931a
commit 634a25b2c6
85 changed files with 41 additions and 5 deletions
+19
View File
@@ -603,6 +603,25 @@ def delete_item(item_id):
return jsonify({"deleted": True})
@app.post("/api/items/bulk-delete")
@permission_required("delete")
def bulk_delete_items():
data = request.get_json(silent=True) or {}
item_ids = data.get("item_ids", [])
if not isinstance(item_ids, list) or not item_ids:
return jsonify({"error": "Choose at least one inventory item to remove."}), 400
if len(item_ids) > 1000 or any(not isinstance(item_id, int) or isinstance(item_id, bool) for item_id in item_ids):
return jsonify({"error": "Choose up to 1,000 valid inventory items to remove."}), 400
item_ids = list(set(item_ids))
placeholders = ", ".join("?" for _ in item_ids)
with get_db() as connection:
images = connection.execute(f"SELECT filename FROM inventory_images WHERE item_id IN ({placeholders})", item_ids).fetchall()
result = connection.execute(f"DELETE FROM inventory_items WHERE id IN ({placeholders})", item_ids)
for image in images:
delete_image(image["filename"])
return jsonify({"deleted": result.rowcount})
@app.post("/api/items/<int:item_id>/images")
@permission_required("write")
def add_images(item_id):