Added initial CSV export functionality.
This commit is contained in:
parent
1ec15328b0
commit
4342d73811
2 changed files with 54 additions and 6 deletions
|
|
@ -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():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue