From a7265dc6c12b644a138028aec4ed2d466b71ddf5 Mon Sep 17 00:00:00 2001 From: candifloss Date: Tue, 11 Feb 2025 17:52:06 +0530 Subject: [PATCH] Improved export_csv.py --- routes/export_csv.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/routes/export_csv.py b/routes/export_csv.py index 6410da5..24f8da6 100644 --- a/routes/export_csv.py +++ b/routes/export_csv.py @@ -7,23 +7,28 @@ export_csv_bp = Blueprint('export_csv', __name__) @export_csv_bp.route('/export_csv', methods=['POST']) def export_csv(): + # Create an in-memory file-like object output = io.StringIO() - outcsv = csv.writer(output, delimiter='|') - - records = Asset.query.all() # Fetch all records from the database - + writer = csv.writer(output, delimiter='|') + + # Fetch all records from the database + records = Asset.query.all() + # Write headers - outcsv.writerow([column.name for column in Asset.__mapper__.columns]) - + writer.writerow([column.name for column in Asset.__mapper__.columns]) + # Write data rows for record in records: - outcsv.writerow([getattr(record, column.name) for column in Asset.__mapper__.columns]) - - output.seek(0) # Move cursor to the beginning - - # Send the file as a download - return Response( + writer.writerow([getattr(record, column.name) for column in Asset.__mapper__.columns]) + + # Prepare the response + response = Response( output.getvalue(), mimetype="text/csv", - headers={"Content-Disposition": "attachment; filename=inventory_export.csv"} - ) \ No newline at end of file + headers={"Content-Disposition": "attachment;filename=inventory_export.csv"} + ) + + # Close the in-memory file-like object + output.close() + + return response \ No newline at end of file