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

Revert change to 404 error if group not found in class register.

It accidentally removed the possibility to select a group manually.
parent 0e6e6b5a
No related branches found
No related tags found
No related merge requests found
...@@ -17,79 +17,94 @@ ...@@ -17,79 +17,94 @@
<input type="submit" value="Select" /> <input type="submit" value="Select" />
</form> </form>
<div class="row"> {% if group %}
<div class="col-md-7"> <div class="row">
<div class="card"> <div class="col-md-7">
<div class="card-header bg-light text-dark"> <div class="card">
{% blocktrans %}Week{% endblocktrans %} <div class="card-header bg-light text-dark">
{{ week }} ({{ week|week_start }} — {{ week|week_end }}), {% blocktrans %}Week{% endblocktrans %}
{{ group.name }} {{ week }} ({{ week|week_start }} — {{ week|week_end }}),
</div> {{ group.name }}
<div class="card-body"> </div>
{% regroup lesson_periods by period.weekday as periods_by_day %} <div class="card-body">
{% for weekday, periods in periods_by_day.items %} {% regroup lesson_periods by period.weekday as periods_by_day %}
<h3>{{ weekday }}</h3> {% for weekday, periods in periods_by_day.items %}
<table class="table table-striped table-bordered table-hover table-responsive-xl"> <h3>{{ weekday }}</h3>
<thead> <table class="table table-striped table-bordered table-hover table-responsive-xl">
<tr> <thead>
<th>{% blocktrans %}Period{% endblocktrans %}</th> <tr>
<th>{% blocktrans %}Subject{% endblocktrans %}</th> <th>{% blocktrans %}Period{% endblocktrans %}</th>
<th>{% blocktrans %}Teachers{% endblocktrans %}</th> <th>{% blocktrans %}Subject{% endblocktrans %}</th>
</tr> <th>{% blocktrans %}Teachers{% endblocktrans %}</th>
</thead>
<tbody>
{% for period in periods %}
<tr class="
{% if period.has_documentation %}
table-success
{% else %}
{% weekday_to_date week weekday as current_date %}
{% today as today %}
{% if current_date < today %}
table-danger
{% endif %}
{% endif %}
">
<td>{{ period.period.period }}</td>
<td>
<a href="{% url 'lesson_by_week_and_period' week period.id %}">
{{ period.lesson.subject.name }}
</a>
</td>
<td>{{ period.lesson.teacher_names }}</td>
</tr> </tr>
{% endfor %} </thead>
</tbody> <tbody>
</table> {% for period in periods %}
<tr class="
{% if period.has_documentation %}
table-success
{% else %}
{% weekday_to_date week weekday as current_date %}
{% today as today %}
{% if current_date < today %}
table-danger
{% endif %}
{% endif %}
">
<td>{{ period.period.period }}</td>
<td>
<a href="{% url 'lesson_by_week_and_period' week period.id %}">
{{ period.lesson.subject.name }}
</a>
</td>
<td>{{ period.lesson.teacher_names }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endfor %}
</div>
</div>
</div>
<div class="col-md-5">
<div class="card">
<div class="card-header bg-light text-dark">
{% blocktrans %}Personal notes{% endblocktrans %}
</div>
{% for person in persons %}
<div class="card-body">
<h5 class="card-title">{{ person.full_name }}</h5>
<p class="card-text">
{% trans "Absent" %}: {{ person.absences }}
({{ person.unexcused }} {% trans "unexcused" %})
</p>
<p class="card-text">
{% trans "Summed up tardiness" %}: {{ person.tardiness }}
</p>
{% for note in person.personal_notes %}
{% if note.remarks %}
<p class="card-text">
{{ note.remarks }}
</p>
{% endif %}
{% endfor %}
</div>
{% endfor %} {% endfor %}
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-5"> {% else %}
<div class="card"> <div class="card text-white bg-danger">
<div class="card-header bg-light text-dark"> <div class="card-header">
{% blocktrans %}Personal notes{% endblocktrans %} {% blocktrans %}No group selected{% endblocktrans %}
</div> </div>
{% for person in persons %} <div class="card-body">
<div class="card-body"> <p>
<h5 class="card-title">{{ person.full_name }}</h5> {% blocktrans %}
<p class="card-text"> You must select a group to see the week summary.
{% trans "Absent" %}: {{ person.absences }} {% endblocktrans %}
({{ person.unexcused }} {% trans "unexcused" %}) </p>
</p>
<p class="card-text">
{% trans "Summed up tardiness" %}: {{ person.tardiness }}
</p>
{% for note in person.personal_notes %}
{% if note.remarks %}
<p class="card-text">
{{ note.remarks }}
</p>
{% endif %}
{% endfor %}
</div>
{% endfor %}
</div> </div>
</div> </div>
</div> {% endif %}
{% endblock %} {% endblock %}
...@@ -98,40 +98,41 @@ def group_week(request: HttpRequest, week: Optional[int] = None) -> HttpResponse ...@@ -98,40 +98,41 @@ def group_week(request: HttpRequest, week: Optional[int] = None) -> HttpResponse
else: else:
group = None group = None
if not group: if group:
raise Http404(_('You must select a group to see the week summary.')) # Get all lesson periods for the selected group
lesson_periods = LessonPeriod.objects.annotate(
# Get all lesson periods for the selected group has_documentation=Exists(LessonDocumentation.objects.filter(
lesson_periods = LessonPeriod.objects.annotate( ~Q(topic__exact=''),
has_documentation=Exists(LessonDocumentation.objects.filter( lesson_period=OuterRef('pk')
~Q(topic__exact=''), ))
lesson_period=OuterRef('pk') ).filter(
)) lesson__date_start__lte=week_start,
).filter( lesson__date_end__gte=week_end
lesson__date_start__lte=week_start, ).select_related(
lesson__date_end__gte=week_end 'lesson', 'lesson__subject', 'period', 'room'
).select_related( ).prefetch_related(
'lesson', 'lesson__subject', 'period', 'room' 'lesson__groups', 'lesson__teachers', 'substitutions'
).prefetch_related( ).extra(
'lesson__groups', 'lesson__teachers', 'substitutions' select={'_week': wanted_week}
).extra( ).filter(
select={'_week': wanted_week} Q(lesson__groups__pk=int(request.GET['group'])) | Q(lesson__groups__parent_groups__pk=int(request.GET['group']))
).filter( )
Q(lesson__groups__pk=int(request.GET['group'])) | Q(lesson__groups__parent_groups__pk=int(request.GET['group']))
) # Aggregate all personal notes for this group and week
persons = Person.objects.filter(
# Aggregate all personal notes for this group and week is_active=True
persons = Person.objects.filter( ).filter(
is_active=True Q(member_of=group) | Q(member_of__parent_groups=group)
).filter( ).prefetch_related(
Q(member_of=group) | Q(member_of__parent_groups=group) 'personal_notes'
).prefetch_related( ).annotate(
'personal_notes' absences=Count('personal_notes__absent', filter=Q(week=wanted_week, absent=True)),
).annotate( unexcused=Count('personal_notes__absent', filter=Q(week=wanted_week, absent=True, excused=False)),
absences=Count('personal_notes__absent', filter=Q(week=wanted_week, absent=True)), tardiness=Sum('personal_notes__tardiness', filter=Q(week=wanted_week))
unexcused=Count('personal_notes__absent', filter=Q(week=wanted_week, absent=True, excused=False)), )
tardiness=Sum('personal_notes__tardiness', filter=Q(week=wanted_week)) else:
) lesson_periods = None
persons = None
# Add a form to filter the view # Add a form to filter the view
select_form = SelectForm(request.GET or None) select_form = SelectForm(request.GET or None)
......
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