inderpartap/Bunk-O-Meter

View on GitHub
app.py

Summary

Maintainability
A
0 mins
Test Coverage
from flask import Flask, render_template, flash, request, redirect, url_for, session
from wtforms import Form, TextField, TextAreaField, validators, StringField, SubmitField
from wtforms.validators import DataRequired
from main import attendance
from parse import * # only for dashboard
from jinja2 import Template
import numpy as np


# App config.
DEBUG = True
app = Flask(__name__)
app.config.from_object(__name__)
app.config['SECRET_KEY'] = '7d441f27d441f27567d441f2b6176a'
final =[[] for i in range(8)]

class LoginForm(Form):
        Reg_No = TextField('Name:', validators=[validators.required()])
        Password = TextField('Password:', validators=[validators.required(), validators.Length(min=3, max=35)])
 
@app.route("/",methods=['GET', 'POST'])
def index():
    form = LoginForm(request.form)
    # print form.errors
    if request.method == 'POST':
        session['username']=request.form['Reg_No']
        session['password']=request.form['Password']
    
        if form.validate():
            # Save the comment here.
            username=session['username']
            password=session['password']
            final = attendance(username,password)
            finals=np.asarray(final)
            finals=finals.T
            leng=len(final[0])
            return render_template('dashboard.html', resultsT = finals, results = final, regno=username, length=leng)
            # return redirect(url_for('atten', arg = final))
        else:
            flash('Error: All the form fields are required. ')
        
    
    return render_template('index.html', form=form)

@app.route("/dashboard")
def dashboard():
    regno=session['username']
    filename=regno+"_attendance.html"
    final = parseatt(filename)
    finals=np.asarray(final)
    finals=finals.T
    leng=len(final[0])
    return render_template('dashboard.html', resultsT = finals, results = final, regno=regno, length=leng)

@app.route("/timetable")
def timetable():
    return render_template('timetable.html')

@app.route("/marks")
def marks():
    return render_template('marks.html')

@app.route("/history")
def history():
    regno=session['username']
    filename=regno+"_history.html"
    history,credits=parsehistory(filename)
    finals_hist=np.asarray(history)
    finals_hist=finals_hist.T
    # finals_credits=np.asarray(credits)
    # finals_credits=finals_credits.T
    return render_template('history.html', regno=regno, history=finals_hist, credits=credits)

@app.route("/plan")
def plan():
    regno=session['username']
    return render_template('timetable_gen.html', regno=regno)

if __name__ == "__main__":
    app.run()