From 1049e0a6a47a6c4fc798960afb141a0be0c948be Mon Sep 17 00:00:00 2001
From: Tom Teichler <tom.teichler@teckids.org>
Date: Wed, 8 Jan 2020 20:28:32 +0100
Subject: [PATCH] =?UTF-8?q?Use=20right=20data=20in=20=E2=80=9Eall=20timeta?=
 =?UTF-8?q?bles=E2=80=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../apps/chronos/templates/chronos/all.html   | 14 +++++++------
 aleksis/apps/chronos/urls.py                  |  1 +
 aleksis/apps/chronos/views.py                 | 21 +++++++++++++++++--
 3 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/aleksis/apps/chronos/templates/chronos/all.html b/aleksis/apps/chronos/templates/chronos/all.html
index 443394be..fd9ce0e2 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 cf94f08a..e73bdb57 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 966dc0b8..70c68e58 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
-- 
GitLab