diff --git a/advlabdb/routes.py b/advlabdb/routes.py index 72994fe..bc0e87a 100644 --- a/advlabdb/routes.py +++ b/advlabdb/routes.py @@ -3,6 +3,20 @@ from flask import render_template, request, url_for from advlabdb.utils import * from advlabdb.models import * +activeSemester_id = Semester.query.all()[-1].id + +@app.context_processor +def util_processor(): + def semesterDropDownItems(): + semesters = Semester.query.all() + items = [] + for semester in semesters: + items.append('
  • ' + semester.label + '
  • ') + return items + return dict(semesterDropDownItems=semesterDropDownItems, + activeSemesterLabel=Semester.query.get(activeSemester_id).label) + @app.route("/") def index(): page = "index" @@ -10,7 +24,7 @@ def index(): @app.route("/students") def students(): - semester = Semester.query.all()[-1] + semester = Semester.query.get(activeSemester_id) parts = semester.parts tables = [] tablesLabels = [] @@ -57,7 +71,7 @@ def assistants(): @app.route("/experiments") def experiments(): - semester = Semester.query.all()[-1] + semester = Semester.query.get(activeSemester_id) parts = semester.parts tables = [] tablesLabels = [] @@ -83,7 +97,7 @@ def appointments(): @app.route("/groups") def groups(): - semester = Semester.query.all()[-1] + semester = Semester.query.get(activeSemester_id) parts = semester.parts tables = [] tablesLabels = [] @@ -115,3 +129,22 @@ def users(): page = "users" return render_template(page + ".html", navbarItems=navbarItems(page), table=table) + +@app.route("/set_semester", methods=["GET"]) +def set_semester(): + global activeSemester_id + activeSemester_id = int(request.args.get("semester_id")) + page = "index" + return render_template(page + ".html", navbarItems=navbarItems(page)) + +@app.route("/semesters") +def semesters(): + headerAndDataList = [["Label", "row.label"], + ["Parts", "row.parts"]] + + table = makeTable(headerAndDataList=headerAndDataList, + rows=Semester.query.all()) + + page = "semesters" + return render_template(page + ".html", navbarItems=navbarItems(page), + table=table) diff --git a/advlabdb/templates/layout.html b/advlabdb/templates/layout.html index b27dfe3..e5ce9af 100644 --- a/advlabdb/templates/layout.html +++ b/advlabdb/templates/layout.html @@ -22,13 +22,27 @@ diff --git a/advlabdb/templates/semesters.html b/advlabdb/templates/semesters.html new file mode 100644 index 0000000..31810f8 --- /dev/null +++ b/advlabdb/templates/semesters.html @@ -0,0 +1,6 @@ +{% extends "layout.html" %} +{% block content %} + +{{table|safe}} + +{% endblock content %} diff --git a/advlabdb/utils.py b/advlabdb/utils.py index ce339c4..59472e3 100644 --- a/advlabdb/utils.py +++ b/advlabdb/utils.py @@ -1,17 +1,20 @@ def navbarItems(activePage): - pages = ["Students", "Assistants", "Experiments", "Appointments", "Groups", "Users"] - items = "" + pages = ["Students", "Assistants", "Experiments", "Appointments", "Groups", "Users", "Semesters"] + items = [] for page in pages: active = "" lowerPage = page.lower().replace(" ", "_") if lowerPage == activePage: active = " active" - items += '' + page + '' + items.append('' + page + '') return items def makeTable(headerAndDataList, rows): def cellString(cell): cell = str(cell) + if cell == "[]": + return "None" + excludeChars = """<>"'[]""" for c in excludeChars: if c in cell: diff --git a/testDB.py b/testDB.py index 8402952..f8bfd93 100644 --- a/testDB.py +++ b/testDB.py @@ -13,12 +13,14 @@ db.session.add(student1) db.session.add(student2) db.session.add(student3) -sem = Semester(label="SS2021") +sem1 = Semester(label="WS2021") +sem2 = Semester(label="SS21") -db.session.add(sem) +db.session.add(sem1) +db.session.add(sem2) -parta1 = Part(label="A/1", semester=sem) -partb2 = Part(label="B/2", semester=sem) +parta1 = Part(label="A/1", semester=sem2) +partb2 = Part(label="B/2", semester=sem2) db.session.add(parta1) db.session.add(partb2)