Skip to content
Snippets Groups Projects
Verified Commit 71bf7438 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Add students list for quick access

parent cea3fe97
No related branches found
No related tags found
1 merge request!80Resolve "Add student view with further information"
Pipeline #3515 passed
......@@ -24,12 +24,18 @@ MENUS = {
"icon": "view_week",
"validators": ["menu_generator.validators.is_authenticated"],
},
{
{
"name": _("My overview"),
"url": "overview_me",
"icon": "insert_chart",
"validators": ["menu_generator.validators.is_authenticated"],
},
{
"name": _("My students"),
"url": "my_students",
"icon": "people",
"validators": ["menu_generator.validators.is_authenticated"],
},
{
"name": _("Register absence"),
"url": "register_absence",
......
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load data_helpers %}
{% load week_helpers %}
{% load i18n %}
{% block browser_title %}{% blocktrans %}My students{% endblocktrans %}{% endblock %}
{% block page_title %}
{% blocktrans %}My students{% endblocktrans %}
{% endblock %}
{% block content %}
<div class="collection">
{% for person in persons %}
<a class="collection-item" href="{% url "overview_person" person.pk %}">
{{ person }}
</a>
{% empty %}
<li class="collection-item flow-text">
{% blocktrans %}No students available.{% endblocktrans %}
</li>
{% endfor %}
</div>
{% endblock %}
......@@ -26,7 +26,8 @@ urlpatterns = [
path(
"print/group/<int:id_>", views.full_register_group, name="full_register_group"
),
path("person/<int:id_>/", views.overview_person, name="overview_person"),
path("persons/", views.my_students, name="my_students"),
path("persons/<int:id_>/", views.overview_person, name="overview_person"),
path("me/", views.overview_person, name="overview_me"),
path("absence/new", views.register_absence, name="register_absence"),
path("extra_marks/", views.ExtraMarkListView.as_view(), name="extra_marks"),
......
......@@ -454,11 +454,23 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
return render(request, "alsijil/print/full_register.html", context)
def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResponse:
def my_students(request: HttpRequest) -> HttpResponse:
context = {}
person = objectgetter_optional(Person, default="request.user.person", default_eval=True)(
request, id_
relevant_groups = (
Group.objects.for_current_school_term_or_all()
.annotate(lessons_count=Count("lessons"))
.filter(lessons_count__gt=0, owners=request.user.person)
)
persons = Person.objects.filter(member_of__in=relevant_groups)
context["persons"] = persons
return render(request, "alsijil/class_register/persons.html", context)
def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResponse:
context = {}
person = objectgetter_optional(
Person, default="request.user.person", default_eval=True
)(request, id_)
context["person"] = person
if request.method == "POST":
......@@ -554,11 +566,7 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
unexcused=Count("absent")
)
)
stat.update(
personal_notes.aggregate(
tardiness=Sum("late")
)
)
stat.update(personal_notes.aggregate(tardiness=Sum("late")))
for extra_mark in ExtraMark.objects.all():
stat.update(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment