1
0
Fork 0
mirror of https://codeberg.org/Mo8it/AdvLabDB.git synced 2024-12-20 23:41:20 +00:00

Add number of missing final part marks to both spaces

This commit is contained in:
Mo 2022-02-24 01:10:04 +01:00
parent 8d34d3d564
commit d0a6090553
12 changed files with 73 additions and 32 deletions

View file

@ -41,9 +41,7 @@ assistantSpace = Admin(
url="/assistant",
endpoint="assistantSpace",
template_mode="bootstrap3",
index_view=customClasses.SecureAssistantIndexView(
name="Assistant", template="assistant_index.html", url="/assistant", endpoint="assistantSpace"
),
index_view=customClasses.SecureAssistantIndexView(name="Assistant", url="/assistant", endpoint="assistantSpace"),
)
from advlabdb import models

View file

@ -2,9 +2,10 @@ from flask import flash, redirect, request, url_for
from flask_admin import AdminIndexView, BaseView, expose
from flask_admin.contrib.sqla import ModelView
from flask_security import current_user
from sqlalchemy import and_
from advlabdb.exceptions import DataBaseException, ModelViewException
from advlabdb.models import ExperimentMark, Part, PartStudent
from advlabdb.models import ExperimentMark, Part, PartStudent, GroupExperiment, SemesterExperiment, Assistant
from advlabdb.utils import reportBadAttempt, userActiveSemester
@ -28,13 +29,20 @@ class SecureAdminIndexView(CustomIndexView):
@expose()
def index(self):
number_of_missing_final_experiment_marks = ExperimentMark.query.filter(
ExperimentMark.part_student.has(PartStudent.part.has(Part.semester == userActiveSemester())),
ExperimentMark.final_experiment_mark == None,
active_semester_experiment_marks_query = ExperimentMark.query.filter(
ExperimentMark.part_student.has(PartStudent.part.has(Part.semester == userActiveSemester()))
)
number_of_all_experiment_marks = active_semester_experiment_marks_query.count()
number_of_missing_final_experiment_marks = active_semester_experiment_marks_query.filter(
ExperimentMark.final_experiment_mark == None
).count()
return self.render(
"admin_index.html", number_of_missing_final_experiment_marks=number_of_missing_final_experiment_marks
"admin_index.html",
number_of_missing_final_experiment_marks=number_of_missing_final_experiment_marks,
number_of_all_experiment_marks=number_of_all_experiment_marks,
)
@ -42,6 +50,31 @@ class SecureAssistantIndexView(CustomIndexView):
def is_accessible(self):
return assistantViewIsAccessible()
@expose()
def index(self):
active_semester_experiment_marks_query = ExperimentMark.query.filter(
ExperimentMark.group_experiment.has(
GroupExperiment.semester_experiment.has(
and_(
SemesterExperiment.semester == userActiveSemester(),
SemesterExperiment.assistants.any(Assistant.user == current_user),
)
)
)
)
number_of_all_experiment_marks = active_semester_experiment_marks_query.count()
number_of_missing_final_experiment_marks = active_semester_experiment_marks_query.filter(
ExperimentMark.final_experiment_mark == None
).count()
return self.render(
"assistant_index.html",
number_of_missing_final_experiment_marks=number_of_missing_final_experiment_marks,
number_of_all_experiment_marks=number_of_all_experiment_marks,
)
class CustomModelView(ModelView):
create_modal = True

View file

@ -1,11 +1,11 @@
{% from "macros.html" import information %}
{% from "macros.html" import information, missing_final_experiment_marks %}
{% extends "admin/index.html" %}
{% block body %}
{{information(current_user, userActiveSemester, role="admin")}}
<h3>Welcome back, commander!</h3>
<p>Number of missing final experiment marks: {{ number_of_missing_final_experiment_marks }}</p>
{{missing_final_experiment_marks(number_of_missing_final_experiment_marks, number_of_all_experiment_marks)}}
{{ super() }}
{% endblock %}

View file

@ -1,8 +1,11 @@
{% from "macros.html" import information %}
{% from "macros.html" import information, missing_final_experiment_marks %}
{% extends "admin/index.html" %}
{% block body %}
{{information(current_user, userActiveSemester, role="assistant")}}
<h3>Welcome back!</h3>
{{missing_final_experiment_marks(number_of_missing_final_experiment_marks, number_of_all_experiment_marks)}}
{{ super() }}
{% endblock %}

View file

@ -9,3 +9,10 @@ User: <a href="{{url_for('index')}}{{role}}/user/details/?id={{current_user.id}}
| <a href="{{ url_for('index') }}admin">Admin space</a>.
{% endif %}
{% endmacro %}
{% macro missing_final_experiment_marks(number_of_missing_final_experiment_marks, number_of_all_experiment_marks) %}
<p>
Number of missing final experiment marks:
{{ number_of_missing_final_experiment_marks }} / {{ number_of_all_experiment_marks }}
</p>
{% endmacro %}