flask_crud_app/routes/upload.py

38 lines
1.2 KiB
Python

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')