From 6d667b20019fbf172e02ceeff54ca5c6c0e44509 Mon Sep 17 00:00:00 2001 From: candifloss Date: Thu, 6 Mar 2025 13:24:46 +0530 Subject: [PATCH] Fixed bug in redirect --- routes/confirm_save.py | 22 +++++++++++++++++----- routes/upload.py | 8 ++++++-- templates/csv_preview.html | 7 +++++++ templates/upload.html | 4 ++-- 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/routes/confirm_save.py b/routes/confirm_save.py index 564cd67..db2e892 100644 --- a/routes/confirm_save.py +++ b/routes/confirm_save.py @@ -8,17 +8,25 @@ confirm_save_bp = Blueprint('confirm_save', __name__) @confirm_save_bp.route('/confirm_save', methods=['POST']) def confirm_save(): + # Determine if the operation was 'import' or 'edit' + mode = session.get('csv_mode', 'import') # Default to 'import' if mode is not set + redirect_route = 'uploadcsv.import_from_csv' if mode == 'import' else 'uploadcsv.edit_using_csv' + + + # Check if assets data is present in the request if 'assets' not in request.form: flash("No assets data found in the request.", "error") - return redirect(url_for('uploadcsv.import_from_csv')) + #return redirect(url_for('uploadcsv.import_from_csv')) + return redirect(url_for(redirect_route)) try: # Parse the JSON data from the form edited_assets = json.loads(request.form['assets']) except json.JSONDecodeError: flash("Invalid JSON data in the request.", "error") - return redirect(url_for('uploadcsv.import_from_csv')) + #return redirect(url_for('uploadcsv.import_from_csv')) + return redirect(url_for(redirect_route)) # Validate each asset errors = [] @@ -31,14 +39,16 @@ def confirm_save(): # If there are validation errors, flash them and redirect back to the preview page for error in errors: flash(error, "error") - return redirect(url_for('uploadcsv.import_from_csv')) + #return redirect(url_for('uploadcsv.import_from_csv')) + return redirect(url_for(redirect_route)) # Save validated assets to the database for asset_data in edited_assets: primary_attrib = next((attrib for attrib in item_attributes if attrib.primary), None) if not primary_attrib: flash("Primary attribute not defined in configuration.", "error") - return redirect(url_for('uploadcsv.import_from_csv')) + #return redirect(url_for('uploadcsv.import_from_csv')) + return redirect(url_for(redirect_route)) primary_value = asset_data[primary_attrib.attrib_name] asset = Asset.query.filter_by(**{primary_attrib.attrib_name: primary_value}).first() @@ -57,10 +67,12 @@ def confirm_save(): except Exception as e: db.session.rollback() flash(f"Error saving data to the database: {str(e)}", "error") - return redirect(url_for('uploadcsv.import_from_csv')) + #return redirect(url_for('uploadcsv.import_from_csv')) + return redirect(url_for(redirect_route)) # Clear session data after successful insertion session.pop('new_entries', None) session.pop('existing_entries', None) session.pop('invalid_entries', None) + session.pop('csv_mode', None) return redirect('/viewall') \ No newline at end of file diff --git a/routes/upload.py b/routes/upload.py index e919a82..0c94132 100644 --- a/routes/upload.py +++ b/routes/upload.py @@ -56,6 +56,7 @@ def _process_csv_file(file, mode): @upload_bp.route('/import_from_csv', methods=['GET', 'POST']) def import_from_csv(): + session['csv_mode'] = 'import' # Store mode in session if request.method == 'POST': # Check if a file was uploaded if 'file' not in request.files: @@ -83,16 +84,18 @@ def import_from_csv(): # Redirect to preview page return render_template( 'csv_preview.html', + mode='import', new_entries=result['new_entries'], invalid_entries=result['invalid_entries'], item_attributes=item_attributes ) # Render the upload page for GET requests - return render_template('upload.html', mode="addnew") + return render_template('upload.html', mode="import") @upload_bp.route('/edit_using_csv', methods=['GET', 'POST']) def edit_using_csv(): + session['csv_mode'] = 'edit' # Store mode in session if request.method == 'POST': # Check if a file was uploaded if 'file' not in request.files: @@ -120,10 +123,11 @@ def edit_using_csv(): # Redirect to preview page return render_template( 'csv_preview.html', + mode='edit', existing_entries=result['existing_entries'], invalid_entries=result['invalid_entries'], item_attributes=item_attributes ) # Render the upload page for GET requests - return render_template('upload.html', mode="update") \ No newline at end of file + return render_template('upload.html', mode="edit") \ No newline at end of file diff --git a/templates/csv_preview.html b/templates/csv_preview.html index 3f1275b..105bc1d 100644 --- a/templates/csv_preview.html +++ b/templates/csv_preview.html @@ -31,6 +31,13 @@ ] %} {% if entries %}

{{ table_name }}

+ {% if table_name == 'Invalid Entries' %} + {% if mode == 'import' %} +

These entries already exist:

+ {% elif mode == 'edit' %} +

These entries do not exist:

+ {% endif %} + {% endif %} diff --git a/templates/upload.html b/templates/upload.html index 34396c2..dcb21da 100644 --- a/templates/upload.html +++ b/templates/upload.html @@ -24,9 +24,9 @@