diff --git a/routes/confirm_save.py b/routes/confirm_save.py index 2dfc587..7b84051 100644 --- a/routes/confirm_save.py +++ b/routes/confirm_save.py @@ -1,24 +1,35 @@ -from flask import Blueprint, redirect, session, request +from flask import Blueprint, redirect, session, request, jsonify from models import Asset, db import json +from config import item_attributes # Import the configuration confirm_save_bp = Blueprint('confirm_save', __name__) -# When confirmed, write the csv data to the database @confirm_save_bp.route('/confirm_save', methods=['POST']) def confirm_save(): - edited_assets = json.loads(request.form['assets']) + if 'assets' not in request.form: + return "No assets data found in the request.", 400 + + try: + edited_assets = json.loads(request.form['assets']) + except json.JSONDecodeError: + return "Invalid JSON data in the request.", 400 + session['assets'] = edited_assets for asset_data in edited_assets: - asset = Asset( - assettag=asset_data['assettag'], - hostname=asset_data['hostname'], - warrantyfrom=asset_data['warrantyfrom'], - status=asset_data['status'], - staffnum=asset_data['staffnum'] - ) + # Dynamically create the Asset object using item_attributes + asset = Asset(**{ + attrib: asset_data[attrib] + for attrib in item_attributes + }) db.session.add(asset) - db.session.commit() + + try: + db.session.commit() + except Exception as e: + db.session.rollback() + return f"Error saving data to the database: {str(e)}", 500 + session.pop('assets', None) # Clear session data return redirect('/viewall') \ No newline at end of file diff --git a/static/edited _csv.js b/static/edited_csv.js similarity index 100% rename from static/edited _csv.js rename to static/edited_csv.js