from flask import (
    Blueprint, flash, g, redirect, render_template, request, url_for
)



from stud.db import show, get, insert, delete, update

from stud.forms import AddForm, EditForm

bp = Blueprint('stud', __name__) 


@bp.route('/')
def index():
    data ={}
    data['records'] = show()
    data['site_url'] = url_for('stud.index')
    return render_template('stud/index.html', data=data)

@bp.route('/add_student', methods=('GET', 'POST'))
def add_student():
    form = AddForm()
    if request.method == 'POST' and form.validate_on_submit():
        roll_no=form.roll_no.data
        name=form.name.data
        data = {}
        data['roll_no']=roll_no
        data['name']=name
        error = insert(data)
        if error is None :
            return redirect(url_for('stud.index'))
        else:
            flash(error)
    # method is GET
    title='Add student'
    return render_template('stud/stud_add.html',title=title, form=form)



@bp.route('/update_student/<int:roll_no>', methods=('GET', 'POST'))
def update_student(roll_no):
    records=get(roll_no)
    form = EditForm(old_roll_no=roll_no, name=records['Name'], roll_no=records['roll_no'])
    if request.method == 'POST' and form.validate_on_submit():
        roll_no=form.roll_no.data
        name=form.name.data
        old_roll_no = form.old_roll_no.data
        data = {}
        data['roll_no']= roll_no
        data['name']= name
        error = update(data,old_roll_no)
        if error is None :
            return redirect(url_for('stud.index'))
        else:
             flash(error)

    # method is GET
    return render_template('stud/stud_edit.html',form=form)

@bp.route('/delete_student/<int:roll_no>')
def delete_student(roll_no):
    delete(roll_no)
    return redirect(url_for('stud.index'))