From 7444fc5881cc38666717a5fb08aa0b55b5823e9e Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Thu, 18 Jul 2019 00:36:17 +0200
Subject: [PATCH] Add times and periods as first column.

---
 biscuit/apps/chronos/models.py                |  8 ++++
 .../chronos/templates/chronos/tt_week.html    | 38 ++++++++++++++++++-
 biscuit/apps/chronos/views.py                 |  3 +-
 3 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/biscuit/apps/chronos/models.py b/biscuit/apps/chronos/models.py
index 3b27ed81..b1182497 100644
--- a/biscuit/apps/chronos/models.py
+++ b/biscuit/apps/chronos/models.py
@@ -24,6 +24,14 @@ class TimePeriod(models.Model):
     def __str__(self):
         return '%s, %d. period (%s - %s)' % (self.weekday, self.period, self.time_start, self.time_end)
 
+    @classmethod
+    def get_times_dict(cls):
+        periods = {}
+        for period in cls.objects.all():
+            periods[period.period] = (period.time_start, period.time_end)
+
+        return periods
+
 
 class Subject(models.Model):
     abbrev = models.CharField(verbose_name=_(
diff --git a/biscuit/apps/chronos/templates/chronos/tt_week.html b/biscuit/apps/chronos/templates/chronos/tt_week.html
index 6bc25000..c07d17de 100644
--- a/biscuit/apps/chronos/templates/chronos/tt_week.html
+++ b/biscuit/apps/chronos/templates/chronos/tt_week.html
@@ -1,6 +1,6 @@
 {# -*- engine:django -*- #}
 {% extends "core/base.html" %}
-{% load bootstrap4 %}
+{% load bootstrap4 i18n %}
 
 {% block page_title %}Timetable{% endblock %}
 
@@ -9,6 +9,42 @@
   {{ filter_descs }}
  </p>
 
+ <div class="float-left">
+  <ul class="list-group">
+   <li class="list-group-item active">
+    {% blocktrans %}Times{% endblocktrans %}
+   </li>
+  </ul>
+  <div class="container">
+   {% for num, times in periods.items %}
+    <div class="row">
+     <div class="col-sm">
+      <div class="card" style="width: 18rem; {% if lesson.colour_fg %} color: {{ lesson.colour_fg }}; {% endif %} {% if lesson.colour_bg %} background-color: {{ lesson.colour_bg }}; {% endif %}">
+       <div class="card-body">
+        <div class="row">
+         <div class="col-sm">
+          <span class="card-title">{{ num }}.</span>
+         </div>
+        </div>
+        <div class="row">
+         <div class="col-sm">
+          <span class="card-text">{{ times.0}}</span>
+         </div>
+         <div class="col-sm">
+          <span class="card-text">-</span>
+         </div>
+         <div class="col-sm">
+          <span class="card-text">{{ times.1 }}</span>
+         </div>
+        </div>
+       </div>
+      </div>
+     </div>
+    </div>
+   {% endfor %}
+  </div>
+ </div>
+
  {% for weekday, lesson_periods_day in lesson_periods.items %}
   {% include "chronos/tt_day.html" with lesson_periods=lesson_periods_day %}
  {% endfor %}
diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py
index e52840d8..776f7e92 100644
--- a/biscuit/apps/chronos/views.py
+++ b/biscuit/apps/chronos/views.py
@@ -8,7 +8,7 @@ from biscuit.apps.cambro.models import Room
 from biscuit.core.decorators import admin_required
 from biscuit.core.models import Group, Person
 
-from .models import LessonPeriod
+from .models import LessonPeriod, TimePeriod
 
 
 @login_required
@@ -42,5 +42,6 @@ def timetable(request):
 
     context['lesson_periods'] = OrderedDict(sorted(per_day.items()))
     context['filter_descs'] = ', '.join(filter_descs)
+    context['periods'] = TimePeriod.get_times_dict()
 
     return render(request, 'chronos/tt_week.html', context)
-- 
GitLab