Skip to content
Snippets Groups Projects
Commit fbc203aa authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Merge branch 'feature/add-header-box' into 'master'

Add header box with affected teachers and groups in substitution views

See merge request !37
parents b7636f9b e04cd0de
No related branches found
No related tags found
1 merge request!37Add header box with affected teachers and groups in substitution views
......@@ -207,6 +207,21 @@ class LessonSubstitutionQuerySet(LessonDataQuerySet):
_period_path = "lesson_period__"
_subst_path = ""
def affected_lessons(self):
""" Return all lessons which are affected by selected substitutions """
return Lesson.objects.filter(lesson_periods__substitutions__in=self)
def affected_teachers(self):
""" Return all teachers which are affected by selected substitutions (as substituted or substituting) """
return Person.objects.filter(Q(lessons_as_teacher__in=self.affected_lessons()) | Q(lesson_substitutions__in=self))
def affected_groups(self):
""" Return all groups which are affected by selected substitutions """
return Group.objects.filter(lessons__in=self.affected_lessons())
class TimePeriod(models.Model):
WEEKDAY_CHOICES = list(enumerate(i18n_day_names_lazy()))
......
from django.utils.translation import gettext_lazy as _
CONSTANCE_CONFIG = {
"CHRONOS_SUBSTITUTIONS_PRINT_DAY_NUMBER": (2, _("Number of days shown on substitutions print view")),
"CHRONOS_SUBSTITUTIONS_PRINT_DAY_NUMBER": (
2,
_("Number of days shown on substitutions print view"),
),
"CHRONOS_SUBSTITUTIONS_SHOW_HEADER_BOX": (
True,
_("The header box shows affected teachers/groups."),
),
}
CONSTANCE_CONFIG_FIELDSETS = {
"Chronos settings": ("CHRONOS_SUBSTITUTIONS_PRINT_DAY_NUMBER",),
"Chronos settings": (
"CHRONOS_SUBSTITUTIONS_PRINT_DAY_NUMBER",
"CHRONOS_SUBSTITUTIONS_SHOW_HEADER_BOX",
),
}
......@@ -108,3 +108,7 @@ table.substitutions td, table.substitutions th {
margin: 2px;
letter-spacing: 0.3pt;
}
.black-text-a a {
color: black;
}
{% load i18n %}
{% if affected_teachers and affected_groups %}
<div class="{% if not print %}card{% endif %}">
<div class="{% if not print %}card-content{% endif %}">
{% if affected_teachers %}
<div class="row no-margin">
<div class="col s12 m3">
<strong class="truncate">
{% trans "Affected teachers" %}
</strong>
</div>
<div class="col s12 m9 black-text-a">
{% include "chronos/partials/teachers.html" with teachers=affected_teachers %}
</div>
</div>
{% endif %}
{% if affected_groups %}
<div class="row no-margin">
<div class="col s12 m3">
<strong class="truncate">
{% trans "Affected groups" %}
</strong>
</div>
<div class="col s12 m9 black-text-a">
{% include "chronos/partials/groups.html" with groups=affected_groups %}
</div>
</div>
{% endif %}
</div>
</div>
{% if print %}<br/>{% endif %}
{% endif %}
......@@ -26,22 +26,7 @@
<div class="row no-print">
<div class="col s12 m6 l8">
{% if header_info.is_box_needed %}
<div class="card">
<div class="card-content">
{% for row in header_info.rows %}
<div class="row no-margin">
<div class="col s3">
<strong class="truncate">{{ row.0 }}</strong>
</div>
<div class="col s9">
{{ row.1 }}
</div>
</div>
{% endfor %}
</div>
</div>
{% endif %}
{% include "chronos/partials/headerbox.html" %}
{# {% include "chronos/hintsinsub.html" %}#}
</div>
......
......@@ -18,20 +18,7 @@
{# {% include "timetable/hintsinsubprint.html" %}#}
{# <div style="margin-bottom: 20px">#}
{# {% if c.header_info.is_box_needed %}#}
{# {% for row in c.header_info.rows %}#}
{# <div class="row no-margin">#}
{# <div class="col s3 no-padding">#}
{# <strong>{{ row.0 }}</strong>#}
{# </div>#}
{# <div class="col s9 no-padding">#}
{# {{ row.1 }}#}
{# </div>#}
{# </div>#}
{# {% endfor %}#}
{# {% endif %}#}
{# </div>#}
{% include "chronos/partials/headerbox.html" with affected_teachers=c.affected_teachers affected_groups=c.affected_groups print=1 %}
<table class="substitutions">
<thead>
......
......@@ -320,9 +320,12 @@ def substitutions(
day_contexts = {wanted_day: {"day": wanted_day}}
for day in day_contexts:
day_contexts[day]["substitutions"] = LessonSubstitution.objects.on_day(
day
).order_by("lesson_period__lesson__groups", "lesson_period__period")
subs = LessonSubstitution.objects.on_day(day).order_by("lesson_period__lesson__groups", "lesson_period__period")
day_contexts[day]["substitutions"] = subs
if config.CHRONOS_SUBSTITUTIONS_SHOW_HEADER_BOX:
day_contexts[day]["affected_teachers"] = subs.affected_teachers()
day_contexts[day]["affected_groups"] = subs.affected_groups()
if not is_print:
context = day_contexts[wanted_day]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment