Added initial CSV export functionality.

This commit is contained in:
Yaro Kasear 2025-07-15 16:11:21 -05:00
parent 1ec15328b0
commit 4342d73811
2 changed files with 54 additions and 6 deletions

View file

@ -1,5 +1,10 @@
import io
import csv
import base64
import datetime
from flask import request, render_template, url_for, jsonify
from sqlalchemy.inspection import inspect
from . import main
from .helpers import FILTER_MAP, inventory_headers, worklog_headers
@ -207,9 +212,35 @@ def delete_inventory_item(id):
db.session.rollback()
return jsonify({"success": False, "error": str(e)}), 400
@main.route("/api/inventory/export", methods=["GET"])
@main.route("/api/inventory/export", methods=["POST"])
def get_inventory_csv():
return jsonify({"success": True}), 200
data = request.get_json()
ids = data.get('ids', [])
if not ids:
return jsonify({"success": False, "error": "No IDs provided"}), 400
rows = db.session.query(Inventory).filter(Inventory.id.in_(ids)).all()
output = io.StringIO()
writer = csv.writer(output)
model = Inventory
columns = [c.key for c in inspect(model).mapper.column_attrs]
writer.writerow(columns)
for item in rows:
writer.writerow([getattr(item, col) for col in columns])
csv_string = output.getvalue()
output.close()
return jsonify({
"success": True,
"csv": base64.b64encode(csv_string.encode()).decode(),
"count": len(rows)
})
@main.route("/inventory_available")
def inventory_available():