From abf342297e880d9c33447f7ca2b1116e3c1e35ff Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Thu, 3 Sep 2020 11:02:27 +0200 Subject: [PATCH] Add view with all groups a person is an owner of --- aleksis/apps/alsijil/menus.py | 6 +++++ .../alsijil/class_register/groups.html | 24 +++++++++++++++++++ aleksis/apps/alsijil/urls.py | 1 + aleksis/apps/alsijil/views.py | 11 +++++++++ 4 files changed, 42 insertions(+) create mode 100644 aleksis/apps/alsijil/templates/alsijil/class_register/groups.html diff --git a/aleksis/apps/alsijil/menus.py b/aleksis/apps/alsijil/menus.py index d20c88b56..8b51bb206 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 000000000..87385476b --- /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 e2bba60a0..af972edd5 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 ce85d1013..b6b76985e 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( -- GitLab