diff --git a/aleksis/apps/chronos/templates/chronos/all.html b/aleksis/apps/chronos/templates/chronos/all.html index 443394bed0e7368a28b8da8bef639926bc80d4c9..fd9ce0e28f5a8b55cc625a68fcb3f563b8336153 100644 --- a/aleksis/apps/chronos/templates/chronos/all.html +++ b/aleksis/apps/chronos/templates/chronos/all.html @@ -1,10 +1,12 @@ {% extends 'core/base.html' %} +{% load i18n %} + {% block content %} <h3>{% blocktrans %}All timetables{% endblocktrans %}</h3> <div class="row"> <div class="col s12 m4"> - <h4>Lehrkräfte</h4> + <h4>{% blocktrans %}Teachers{% endblocktrans %}</h4> <ul class="collection"> {% for teacher in teachers %} <li class="collection-item avatar"> @@ -17,14 +19,14 @@ </div> <div class="col s12 m4"> - <h4>Klassen</h4> + <h4>{% blocktrans%}Groups{% endblocktrans %}</h4> <ul class="collection"> - {% for class in classes %} + {% for group in groups %} <li class="collection-item avatar"> - <i class="circle">{{ class.name }}</i> - <a href="{% url 'timetable_smart_plan' 'class' class.id %}"><strong>{{ class.name }}</strong></a> + <i class="circle">{{ group.name }}</i> + <a href="{% url 'timetable_smart_plan' 'group' group.id %}"><strong>{{ group.name }}</strong></a> <p> - {{ class.text1|default:"" }} – {{ class.text2|default:"" }} <br> + {{ group.text1|default:"" }} – {{ class.text2|default:"" }} <br> Raum: {{ class.room.name|default:"---" }} </p> </li> diff --git a/aleksis/apps/chronos/urls.py b/aleksis/apps/chronos/urls.py index cf94f08a3115eae77e447046aa21332add8566d3..e73bdb5767a736e70e4be5708ce5dac49053f44c 100644 --- a/aleksis/apps/chronos/urls.py +++ b/aleksis/apps/chronos/urls.py @@ -4,6 +4,7 @@ from . import views urlpatterns = [ path("timetable", views.timetable, name="timetable"), + path("all_timetables", views.all, name="all_timetables"), path("timetable/<int:year>/<int:week>", views.timetable, name="timetable_by_week"), path("lessons", views.lessons_day, name="lessons_day"), path("lessons/<when>", views.lessons_day, name="lessons_day_by_date"), diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py index 966dc0b831ffe457c661c09228d2f9d1bb7ed1cb..70c68e58cc6902af6db8c03901270b29de6b37ee 100644 --- a/aleksis/apps/chronos/views.py +++ b/aleksis/apps/chronos/views.py @@ -3,7 +3,7 @@ from datetime import date, datetime, timedelta from typing import Optional from django.contrib.auth.decorators import login_required -from django.db.models import Max, Min +from django.db.models import Count, Max, Min from django.http import HttpRequest, HttpResponse from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse @@ -12,14 +12,31 @@ from django.utils.translation import ugettext as _ from django_tables2 import RequestConfig from aleksis.core.decorators import admin_required +from aleksis.core.models import Person, Group from aleksis.core.util import messages from .forms import LessonSubstitutionForm, SelectForm -from .models import LessonPeriod, LessonSubstitution, TimePeriod +from .models import LessonPeriod, LessonSubstitution, TimePeriod, Room from .tables import LessonsTable, SubstitutionsTable from .util import CalendarWeek +@login_required +def all(request: HttpRequest) -> HttpResponse: + + context = {} + + teachers = Person.objects.annotate(lessons_count=Count("lessons_as_teacher")).filter(lessons_count__gt=0) + groups = Group.objects.annotate(lessons_count=Count("lessons")).filter(lessons_count__gt=0) + rooms = Room.objects.annotate(lessons_count=Count("lesson_periods")).filter(lessons_count__gt=0) + + context['teachers'] = teachers + context['groups'] = groups + context['rooms'] = rooms + + return render(request, 'chronos/all.html', context) + + @login_required def timetable( request: HttpRequest, year: Optional[int] = None, week: Optional[int] = None