From 047f4f119e951562d1b3ce382e3500e4a108a560 Mon Sep 17 00:00:00 2001 From: Tom Teichler <tom.teichler@teckids.org> Date: Sat, 7 Sep 2019 15:26:35 +0200 Subject: [PATCH] Add function to cancel lessons. Closes #25. --- biscuit/apps/chronos/forms.py | 2 +- .../0003_lessonsubstitution_canceled.py | 18 ++++ biscuit/apps/chronos/models.py | 2 + .../chronos/templates/chronos/tt_lesson.html | 88 +++++++++++-------- 4 files changed, 71 insertions(+), 39 deletions(-) create mode 100644 biscuit/apps/chronos/migrations/0003_lessonsubstitution_canceled.py diff --git a/biscuit/apps/chronos/forms.py b/biscuit/apps/chronos/forms.py index 638b6d35..4f599ca9 100644 --- a/biscuit/apps/chronos/forms.py +++ b/biscuit/apps/chronos/forms.py @@ -24,4 +24,4 @@ class SelectForm(forms.Form): class LessonSubstitutionForm(forms.ModelForm): class Meta: model = LessonSubstitution - fields = ['week', 'lesson_period', 'subject', 'teachers', 'room'] + fields = ['week', 'lesson_period', 'subject', 'teachers', 'room', 'canceled'] diff --git a/biscuit/apps/chronos/migrations/0003_lessonsubstitution_canceled.py b/biscuit/apps/chronos/migrations/0003_lessonsubstitution_canceled.py new file mode 100644 index 00000000..7d6b9d00 --- /dev/null +++ b/biscuit/apps/chronos/migrations/0003_lessonsubstitution_canceled.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.5 on 2019-09-07 13:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('chronos', '0002_db_indexes'), + ] + + operations = [ + migrations.AddField( + model_name='lessonsubstitution', + name='canceled', + field=models.BooleanField(default=False), + ), + ] diff --git a/biscuit/apps/chronos/models.py b/biscuit/apps/chronos/models.py index e1100d0c..fedde9f2 100644 --- a/biscuit/apps/chronos/models.py +++ b/biscuit/apps/chronos/models.py @@ -119,6 +119,8 @@ class LessonSubstitution(SchoolRelated): related_name='lesson_substitutions') room = models.ForeignKey('Room', models.CASCADE, null=True) + canceled = models.BooleanField(default=False) + class Meta: unique_together = [['school', 'lesson_period', 'week']] ordering = ['lesson_period__lesson__date_start', 'week', diff --git a/biscuit/apps/chronos/templates/chronos/tt_lesson.html b/biscuit/apps/chronos/templates/chronos/tt_lesson.html index f7a3028f..077cdade 100644 --- a/biscuit/apps/chronos/templates/chronos/tt_lesson.html +++ b/biscuit/apps/chronos/templates/chronos/tt_lesson.html @@ -1,45 +1,57 @@ {# -*- engine:django -*- #} -<div class="card chronos-lesson - {% if lesson_period.get_substitution %} - border border-warning - {% endif %} - " - style=" - {% if lesson_period.lesson.subject.colour_fg %} - color: {{ lesson_period.lesson.subject.colour_fg }}; - {% endif %} - {% if lesson_period.lesson.subject.colour_bg %} - background-color: {{ lesson_period.lesson.subject.colour_bg }}; - {% endif %} - "> - <div class="card-body"> - <div class="row"> - <div class="col-sm"> - <span class="card-title"> - {{ lesson_period.get_subject.abbrev }} - </span> +{% if not lesson_period.get_substitution.canceled %} + <div class="card chronos-lesson + {% if lesson_period.get_substitution %} + border border-warning + {% endif %} + " + style=" + {% if lesson_period.lesson.subject.colour_fg %} + color: {{ lesson_period.lesson.subject.colour_fg }}; + {% endif %} + {% if lesson_period.lesson.subject.colour_bg %} + background-color: {{ lesson_period.lesson.subject.colour_bg }}; + {% endif %} + "> + <div class="card-body"> + <div class="row"> + <div class="col-sm"> + <span class="card-title"> + {{ lesson_period.get_subject.abbrev }} + </span> + </div> </div> - </div> - <div class="row"> - <div class="col-sm"> - {% for group in lesson_period.get_groups.all %} - <span class="card-text">{{ group.short_name }}</span> - {% endfor %} - </div> - <div class="col-sm"> - {% for teacher in lesson_period.get_teachers.all %} - <a href="{% url 'person_by_id' teacher.id %}" - title="{{ teacher.first_name }} {{ teacher.last_name }}" - class="card-text" - data-poload="{% url 'person_by_id_card' teacher.id %}"> - {{ teacher.short_name }} - </a> - {% endfor %} + <div class="row"> + <div class="col-sm"> + {% for group in lesson_period.get_groups.all %} + <span class="card-text">{{ group.short_name }}</span> + {% endfor %} + </div> + <div class="col-sm"> + {% for teacher in lesson_period.get_teachers.all %} + <a href="{% url 'person_by_id' teacher.id %}" + title="{{ teacher.first_name }} {{ teacher.last_name }}" + class="card-text" + data-poload="{% url 'person_by_id_card' teacher.id %}"> + {{ teacher.short_name }} + </a> + {% endfor %} + </div> + <div class="col-sm"> + <span class="card-text">{{ lesson_period.get_room.short_name }}</span> + </div> </div> - <div class="col-sm"> - <span class="card-text">{{ lesson_period.get_room.short_name }}</span> + </div> + </div> +{% else %} + <div class="card text-center chronos-lesson bg-danger"> + <div class="card-body"> + <div class="row"> + <div class="col-sm"> + {% blocktrans %}Canceled{% endblocktrans %} + </div> </div> </div> </div> -</div> +{% endif %} -- GitLab