diff --git a/aleksis/apps/alsijil/menus.py b/aleksis/apps/alsijil/menus.py index d20c88b567ad7d4feb86231eafa4e35d880f9e1c..8b51bb206862364dbed6c57ff9af25d598b48e33 100644 --- a/aleksis/apps/alsijil/menus.py +++ b/aleksis/apps/alsijil/menus.py @@ -24,6 +24,12 @@ MENUS = { "icon": "view_week", "validators": ["menu_generator.validators.is_authenticated"], }, + { + "name": _("My groups"), + "url": "my_groups", + "icon": "people", + "validators": ["menu_generator.validators.is_authenticated"], + }, { "name": _("My overview"), "url": "overview_me", diff --git a/aleksis/apps/alsijil/templates/alsijil/class_register/groups.html b/aleksis/apps/alsijil/templates/alsijil/class_register/groups.html new file mode 100644 index 0000000000000000000000000000000000000000..87385476b881062b7498a7e2ff35120723bba8bd --- /dev/null +++ b/aleksis/apps/alsijil/templates/alsijil/class_register/groups.html @@ -0,0 +1,24 @@ +{# -*- engine:django -*- #} +{% extends "core/base.html" %} +{% load i18n %} + +{% block browser_title %}{% blocktrans %}My groups{% endblocktrans %}{% endblock %} + + +{% block page_title %} + {% blocktrans %}My groups{% endblocktrans %} +{% endblock %} + +{% block content %} + <div class="collection"> + {% for group in groups %} + <a class="collection-item" href="{% url "week_view" "group" group.pk %}"> + {{ group }} + </a> + {% empty %} + <li class="collection-item flow-text"> + {% blocktrans %}No groups available.{% endblocktrans %} + </li> + {% endfor %} + </div> +{% endblock %} diff --git a/aleksis/apps/alsijil/urls.py b/aleksis/apps/alsijil/urls.py index e2bba60a0df002ccf4b110ea8ac5f1e22df8387a..af972edd5be09307c83ad550fa2385fe4d088669 100644 --- a/aleksis/apps/alsijil/urls.py +++ b/aleksis/apps/alsijil/urls.py @@ -26,6 +26,7 @@ urlpatterns = [ path( "print/group/<int:id_>", views.full_register_group, name="full_register_group" ), + path("groups/", views.my_groups, name="my_groups"), 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"), diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index ce85d10136b7a1f566b4c4ad27b8afeb9369d35a..b6b76985ecfc6a9cfc4495e8950a721058751dda 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -473,6 +473,17 @@ def my_students(request: HttpRequest) -> HttpResponse: return render(request, "alsijil/class_register/persons.html", context) +def my_groups(request: HttpRequest) -> HttpResponse: + context = {} + groups = ( + Group.objects.for_current_school_term_or_all() + .annotate(lessons_count=Count("lessons")) + .filter(lessons_count__gt=0, owners=request.user.person) + ) + context["groups"] = groups + return render(request, "alsijil/class_register/groups.html", context) + + def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResponse: context = {} person = objectgetter_optional(