diff --git a/advlabdb/custom_classes.py b/advlabdb/custom_classes.py index f2c3ee2..ffda51c 100644 --- a/advlabdb/custom_classes.py +++ b/advlabdb/custom_classes.py @@ -4,7 +4,7 @@ from flask_admin.contrib.sqla import ModelView from flask_admin.helpers import get_form_data from flask_admin.model.helpers import get_mdict_item_or_list from flask_login import current_user -from sqlalchemy import select +from sqlalchemy import func, select from .exceptions import DatabaseException, ModelViewException from .model_independent_funs import reportBadAttempt @@ -48,22 +48,21 @@ class SecureAdminIndexView(CustomIndexView): @expose("/") def index(self): - active_semester_experiment_mark_ids_stmt = ( - select(ExperimentMark.final_experiment_mark) - .join(PartStudent) - .join(Part) - .where(Part.semester == current_user.active_semester) - ) - number_of_all_experiment_marks = get_count(active_semester_experiment_mark_ids_stmt) - - number_of_missing_final_experiment_marks = get_count( - active_semester_experiment_mark_ids_stmt.where(ExperimentMark.final_experiment_mark == None) + assistants_num_missing = db.session.execute( + select(Assistant, func.count()) + .join(Assistant.semester_experiments) + .where(SemesterExperiment.semester == current_user.active_semester) + .join(SemesterExperiment.group_experiments) + .where(GroupExperiment.experiment_marks_missing == True) + .join(GroupExperiment.experiment_marks) + .where(ExperimentMark.final_experiment_mark == None) + .group_by(Assistant.id) + .order_by(func.count().desc()) ) return self.render( "admin_index.jinja.html", - number_of_missing_final_experiment_marks=number_of_missing_final_experiment_marks, - number_of_all_experiment_marks=number_of_all_experiment_marks, + assistants_num_missing=assistants_num_missing, ) diff --git a/advlabdb/templates/admin_index.jinja.html b/advlabdb/templates/admin_index.jinja.html index b343060..03f745e 100644 --- a/advlabdb/templates/admin_index.jinja.html +++ b/advlabdb/templates/admin_index.jinja.html @@ -1,4 +1,4 @@ -{% from "macros.jinja.html" import information, missing_final_experiment_marks %} +{% from "macros.jinja.html" import information %} {% extends "admin/index.html" %} {% block body %} @@ -6,7 +6,35 @@
- {{ missing_final_experiment_marks(number_of_missing_final_experiment_marks, number_of_all_experiment_marks) }} +
+
+ + + + + + + + + + {% for assistant_num_missing in assistants_num_missing %} + + + + + {% endfor %} + +
+ Assistant + + Missing experiment marks +
+ {{ assistant_num_missing[0] }} + + {{ assistant_num_missing[1] }} +
+
+
{{ super() }} diff --git a/advlabdb/templates/assistant_index.jinja.html b/advlabdb/templates/assistant_index.jinja.html index 8b789a6..ad8e6cc 100644 --- a/advlabdb/templates/assistant_index.jinja.html +++ b/advlabdb/templates/assistant_index.jinja.html @@ -1,4 +1,4 @@ -{% from "macros.jinja.html" import information, missing_final_experiment_marks %} +{% from "macros.jinja.html" import information %} {% extends "admin/index.html" %} {% block body %} @@ -6,7 +6,10 @@
- {{ missing_final_experiment_marks(number_of_missing_final_experiment_marks, number_of_all_experiment_marks)}} +

+ Number of missing final experiment marks: + {{ number_of_missing_final_experiment_marks }} / {{ number_of_all_experiment_marks }} +

{{ super() }} diff --git a/advlabdb/templates/macros.jinja.html b/advlabdb/templates/macros.jinja.html index a1e076e..1213c97 100644 --- a/advlabdb/templates/macros.jinja.html +++ b/advlabdb/templates/macros.jinja.html @@ -2,30 +2,17 @@ User: - {{ current_user }} - + >{{ current_user }} | Active semester: {{ active_semester_str() }} {% if (role == "admin") and (current_user.has_role("assistant")) %} | - Assistant space - . + >Assistant space. {% elif (role == "assistant") and (current_user.has_role("admin")) %} | - Admin space - . + >Admin space. {% endif %} {% endmacro %} - -{% macro missing_final_experiment_marks(number_of_missing_final_experiment_marks, number_of_all_experiment_marks) %} -

- Number of missing final experiment marks: - {{ number_of_missing_final_experiment_marks }} / {{ number_of_all_experiment_marks }} -

-{% endmacro %}