from flask import Blueprint, request, render_template, redirect from models import Asset, db upload_bp = Blueprint('uploadcsv', __name__) @upload_bp.route('/uploadcsv', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': # Check if a file was uploaded if 'file' not in request.files: flash("No file uploaded.", 'error') return redirect(url_for('upload_file')) file = request.files['file'] # Check if the file is a CSV if file.filename == '' or not file.filename.endswith('.csv'): flash("Please upload a valid CSV file.", 'error') return redirect(url_for('upload_file')) try: # Process the CSV file assets = process_csv(file) # Store the processed data in the session for preview session['csv_data'] = [asset.__dict__ for asset in assets] # Redirect to preview page return redirect(url_for('csv_preview')) except Exception as e: # Handle errors during file processing flash(f"Error processing CSV file: {str(e)}", 'error') return redirect(url_for('upload_file')) # Render the upload page for GET requests return render_template('upload.html')