from flask import Blueprint, request, render_template, redirect
from models import Asset, db

update_bp = Blueprint('editasset', __name__)

@update_bp.route('/update/<string:assettag>/', methods=['GET', 'POST'])
def update(assettag):
    item = Asset.query.filter_by(assettag=assettag).first()
    if request.method == 'POST':
        if item:
            assettag = request.form['assettag']
            hostname = request.form['hostname']
            warrantyfrom = request.form['warrantyfrom']
            status = request.form['status']
            if status not in ['Active', 'Inactive']:
                return render_template('update.html', item=item, exc='status')  # Ensure status is valid
            try:
                staffnum = int(request.form['staffnum'])
            except ValueError:
                return render_template('update.html', item=item, exc='staffnum')

            try:
                setattr(item, 'assettag', assettag)
                setattr(item, 'hostname', hostname)
                setattr(item, 'warrantyfrom', warrantyfrom)
                setattr(item, 'status', status)
                setattr(item, 'staffnum', staffnum)

                db.session.commit()
            except exc.IntegrityError:
                return render_template('update.html', item=item, exc='integrity')
            except (exc.StatementError, exc.InvalidRequestError) as e:
                return render_template('update.html', item=item, exc='status')

            return redirect(f'/viewall/')
        return f"Asset {assettag} is not found"

    return render_template('update.html', item=item)