from flask import Blueprint, request, render_template, redirect, flash from definitions.models import Asset, db from config import item_attributes from functions.auth import login_required from config import BrandingConfig delete_bp = Blueprint('deleteasset', __name__) @delete_bp.route('/delete//', methods=['GET', 'POST']) @login_required def delete(primary_value): # Identify the primary attribute 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('/viewall') # Fetch the item using the primary attribute item = Asset.query.filter_by(**{primary_attrib.attrib_name: primary_value}).first() if not item: flash("Item not found.", "error") return redirect('/viewall') if request.method == 'POST': db.session.delete(item) db.session.commit() flash("Item successfully deleted.", "success") return redirect('/viewall') # Render the delete confirmation page with a preview of the item return render_template( 'delete.html', item=item, item_attributes=item_attributes, brandingconfig=BrandingConfig )