aboutsummaryrefslogtreecommitdiff
path: root/ustayml/views/students.py
blob: b46c230cf67b94e52b4370598ef6cc0a71e3b84d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from flask import (
    Blueprint, flash, g, redirect, render_template, request, url_for
)
from werkzeug.exceptions import abort

from ustayml.views.auth import login_required
from ustayml.db import get_db

bp = Blueprint('students', __name__, url_prefix='/students')


@bp.route('/', methods=('GET', 'POST'))
@login_required
def index():
    db = get_db()
    pucp_units = db.execute("select * from pucp_unit;").fetchall()
    semesters = list(range(20, 0, -1))
    dessertion_risks = ['H', 'M', 'L']

    # filters
    filters = {}
    where_clause = "1=1\n"
    if request.method == 'POST':
        filters['pucp_unit'] = request.form['pucp_unit']
        filters['semester'] = request.form['semester']
        filters['dessertion_risk'] = request.form['dessertion_risk']

        if filters['pucp_unit'] in pucp_units:
            where_clause += f"and stu.pucp_unit_id = {filters['pucp_unit']}\n"
        if filters['semester'] in semesters:
            where_clause += f"and stu.current_semester  = {filters['semester']}"
        if filters['dessertion_risk'] in dessertion_risks:
            where_clause += f"and stu.est_dessertion_risk  = {filters['dessertion_risk']}"

        error = None
        if error is not None:
            flash(error)
        else:
            pass
    
    query = f"""
        select stu.*, adm.subdivision3 as "district" 
        from student stu left join administrative_division adm 
            on stu.administrative_division_id = adm.id
        ;
    """
    students = db.execute(query).fetchall()

    # formatting
    for s in students:
        s['fullname'] = f"{s['first_name']} {s['last_name']}"
        s['current_attendance'] = f"{s['current_attendance']*100:.2f}%"
        s['current_merit'] = f"{s['current_merit']*100:.2f}%"

    return render_template('students/index.html', students=students)