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/<path:primary_value>/', 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
    )