from flask import Blueprint, request, render_template, redirect, session import csv from io import TextIOWrapper from models import Asset, db from process_csv import get_csv_data # Import the CSV processing function # Create a Blueprint for upload 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: return redirect('uploadcsv') file = request.files['file'] # Check if the file is a CSV if file.filename == '' or not file.filename.endswith('.csv'): return redirect('uploadcsv') try: # Extract data from the CSV file assets = get_csv_data(file) session['assets'] = assets # Store assets in session # Redirect to preview page with the CSV data return render_template('csv_preview.html', assets=assets) except Exception as e: # Handle errors during file processing print(f"Error processing CSV file: {str(e)}") return redirect('uploadcsv') # Render the upload page for GET requests return render_template('upload.html')