37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
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') |