aboutsummaryrefslogtreecommitdiff
path: root/ustayml/views/students.py
diff options
context:
space:
mode:
Diffstat (limited to 'ustayml/views/students.py')
-rw-r--r--ustayml/views/students.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/ustayml/views/students.py b/ustayml/views/students.py
new file mode 100644
index 0000000..b46c230
--- /dev/null
+++ b/ustayml/views/students.py
@@ -0,0 +1,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)