diff --git a/advlabdb/models.py b/advlabdb/models.py index 0ad489e..2e62ff2 100644 --- a/advlabdb/models.py +++ b/advlabdb/models.py @@ -56,7 +56,7 @@ class Experiment(db.Model): building = db.Column(db.String(100), nullable=False) responsibility = db.Column(db.String(200), nullable=True) duration_in_days = db.Column(db.Integer, nullable=False) - deprecated = db.Column(db.Boolean, nullable=False, default=False) # To not be deleted! + deprecated = db.Column(db.Boolean, nullable=False, default=False) # To not be deleted! oral_weighting = db.Column(db.Float, nullable=False) protocol_weighting = db.Column(db.Float, nullable=False) final_weighting = db.Column(db.Float, nullable=False) @@ -98,15 +98,15 @@ class Assistant(db.Model): class Appointment(db.Model): id = db.Column(db.Integer, primary_key=True) - date = db.Column(db.DateTime, nullable=False) # To be specified with the python package "datetime" - special = db.Column(db.Boolean, nullable=False) # In the break or not + date = db.Column(db.DateTime, nullable=False) # To be specified with the python package "datetime" + special = db.Column(db.Boolean, nullable=False) # In the break or not group_experiment_id = db.Column(db.Integer, db.ForeignKey("group_experiment.id"), nullable=False) assistant_id = db.Column(db.Integer, db.ForeignKey("assistant.id"), nullable=False) class Part(db.Model): id = db.Column(db.Integer, primary_key=True) - label = db.Column(db.String(100), nullable=False) # A/1, A/2, B/1, B/2 + label = db.Column(db.String(100), nullable=False) # A/1, A/2, B/1, B/2 semester_id = db.Column(db.Integer, db.ForeignKey("semester.id"), nullable=False) part_experiments = db.relationship("PartExperiment", backref="part", lazy=True) part_students = db.relationship("PartStudent", backref="part", lazy=True) @@ -114,7 +114,7 @@ class Part(db.Model): class Semester(db.Model): id = db.Column(db.Integer, primary_key=True) - label = db.Column(db.String(100), nullable=False) # WS2122 for example + label = db.Column(db.String(100), nullable=False) # WS2122 for example parts = db.relationship("Part", backref="semester", lazy=True) @@ -126,7 +126,7 @@ class ExperimentMark(db.Model): part_student_id = db.Column(db.Integer, db.ForeignKey("part_student.id"), nullable=False) group_experiment_id = db.Column(db.Integer, db.ForeignKey("group_experiment.id"), nullable=False) assistant_id = db.Column(db.Integer, db.ForeignKey("assistant.id"), - nullable=True) # The assistant who gives the mark + nullable=True) # The assistant who gives the mark class User(db.Model): diff --git a/advlabdb/routes.py b/advlabdb/routes.py index 929588f..ed88d3e 100644 --- a/advlabdb/routes.py +++ b/advlabdb/routes.py @@ -10,51 +10,26 @@ def index(): @app.route("/students") def students(): - parts = Semester.query.first().parts + parts = Semester.query.all()[-1].parts tables = [] tablesLabels = [] + + headerAndDataList = [["Student number", "row.student.student_number"], + ["First name", "row.student.first_name"], + ["Last name", "row.student.last_name"], + ["Email", "row.student.email"], + ["Bachelor thesis", "row.student.bachelor_thesis"], + ["BT WG", "row.student.bachelor_thesis_work_group"], + ["Note", "row.student.note"], + ["Parts", "[ps.part for ps in row.student.part_students]"], + ["Final part mark", "row.final_part_mark"], + ["GN", "row.group.number"], + ["Experiemt marks", "row.experiment_marks"]] + for part in parts: - tablesLabels.append("Part" + part.label + ":") - - table = '' - table += th("Student number") - table += th("First name") - table += th("Last name") - table += th("Email") - table += th("Bachelor thesis") - table += th("BT WG") - table += th("Note") - table += th("Parts") - table += th("Final part mark") - table += th("GN") - table += th("Experiemt marks") - table += '\n\n' - - for partStudent in part.part_students: - student = partStudent.student - - table += '' - - table += td(student.student_number) - table += td(student.first_name) - table += td(student.last_name) - table += td(student.email) - table += td(student.bachelor_thesis) - table += td(student.bachelor_thesis_work_group) - table += td(student.note) - - table += td([ps.part for ps in student.part_students]) - - table += td(partStudent.final_part_mark) - table += td(partStudent.group.number) - - table += td(partStudent.experiment_marks) - - table += '\n' - - table += '' - tables.append(table) - + tablesLabels.append("Part " + part.label + ":") + tables.append(makeTable(headerAndDataList=headerAndDataList, + rows=part.part_students)) page = "students" return render_template(page + ".html", navbarItems=navbarItems(page), tables=tables, tablesLabels=tablesLabels) diff --git a/advlabdb/templates/layout.html b/advlabdb/templates/layout.html index 9ff933d..ab067e5 100644 --- a/advlabdb/templates/layout.html +++ b/advlabdb/templates/layout.html @@ -31,7 +31,11 @@ - {% block content %}{% endblock content %} +
+
+ {% block content %}{% endblock content %} +
+
diff --git a/advlabdb/templates/students.html b/advlabdb/templates/students.html index 47d2464..87f9869 100644 --- a/advlabdb/templates/students.html +++ b/advlabdb/templates/students.html @@ -2,19 +2,21 @@ {% block content %} {% for table in tables %} -{{tablesLabels[loop.index0]}} -
- - {{table|safe}} -
-
+

{{tablesLabels[loop.index0]}}

+ + {{table|safe}} +
+
+
+
{% else %} No parts in this semster yet! {% endfor %} diff --git a/advlabdb/utils.py b/advlabdb/utils.py index 5cad379..0cd7720 100644 --- a/advlabdb/utils.py +++ b/advlabdb/utils.py @@ -9,8 +9,26 @@ def navbarItems(activePage): items += '' + page + '' return items -def td(cell): - return "" + str(cell) + "" +def makeTable(headerAndDataList, rows): + def td(cell): + return "" + str(cell) + "" -def th(cell): - return '' + str(cell) + '' + def th(cell): + return '' + str(cell) + '' + + + table = '' + for i in headerAndDataList: + table += th(i[0]) + table += '\n\n' + + for row in rows: + table += '' + + for i in headerAndDataList: + table += td(eval(i[1])) + + table += '\n' + + table += '' + return table