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

Refactor group view logic to properly load lessons. Closes #16.

parent b7e635cc
No related branches found
No related tags found
No related merge requests found
...@@ -17,67 +17,53 @@ ...@@ -17,67 +17,53 @@
<input type="submit" value="Select" /> <input type="submit" value="Select" />
</form> </form>
{% if group %} <div class="row">
<div class="row"> <div class="col-md-7">
<div class="col-md-7"> <div class="card">
<div class="card"> <div class="card-header bg-light text-dark">
<div class="card-header bg-light text-dark"> {% blocktrans %}Week{% endblocktrans %}
{% blocktrans %}Week{% endblocktrans %} {{ week }} ({{ week|week_start }} — {{ week|week_end }}),
{{ week }} ({{ week|week_start }} — {{ week|week_end }}), {{ group.name }}
{{ group.name }} </div>
</div> <div class="card-body">
<div class="card-body"> {% regroup lesson_periods by period.weekday as periods_by_day %}
{% for weekday, periods in periods_by_day.items %} {% for weekday, periods in periods_by_day.items %}
<h3>{{ weekday }}</h3> <h3>{{ weekday }}</h3>
<table class="table table-striped table-bordered table-hover table-responsive-xl"> <table class="table table-striped table-bordered table-hover table-responsive-xl">
<thead> <thead>
<tr>
<th>{% blocktrans %}Period{% endblocktrans %}</th>
<th>{% blocktrans %}Subject{% endblocktrans %}</th>
<th>{% blocktrans %}Teachers{% endblocktrans %}</th>
</tr>
</thead>
<tbody>
{% for period in periods %}
<tr> <tr>
<th>{% blocktrans %}Period{% endblocktrans %}</th> <td>{{ period.period.period }}</td>
<th>{% blocktrans %}Subject{% endblocktrans %}</th> <td>
<th>{% blocktrans %}Teachers{% endblocktrans %}</th> <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>
</thead> {% endfor %}
<tbody> </tbody>
{% for period in periods %} </table>
<tr> {% endfor %}
<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>
<div class="card-body">
Not implemented yet.
</div>
</div> </div>
</div> </div>
</div> </div>
{% else %} <div class="col-md-5">
<div class="card text-white bg-danger"> <div class="card">
<div class="card-header"> <div class="card-header bg-light text-dark">
{% blocktrans %}No group selected{% endblocktrans %} {% blocktrans %}Personal notes{% endblocktrans %}
</div> </div>
<div class="card-body"> <div class="card-body">
<p> Not implemented yet.
{% blocktrans %} </div>
You must select a group to see the week summary.
{% endblocktrans %}
</p>
</div> </div>
</div> </div>
{% endif %} </div>
{% endblock %} {% endblock %}
...@@ -98,25 +98,28 @@ def group_week(request: HttpRequest, week: Optional[int] = None) -> HttpResponse ...@@ -98,25 +98,28 @@ def group_week(request: HttpRequest, week: Optional[int] = None) -> HttpResponse
else: else:
group = None group = None
periods_by_day_unsorted = {} if not group:
if group: raise Http404(_('You must select a group to see the week summary.'))
for act_group in [group] + list(group.child_groups.all()):
for lesson in act_group.lessons.filter(date_start__lte=week_start, date_end__gte=week_end): lesson_periods = LessonPeriod.objects.filter(
for lesson_period in lesson.lesson_periods.all(): lesson__date_start__lte=week_start,
periods_by_day_unsorted.setdefault( lesson__date_end__gte=week_end
lesson_period.period.weekday, []).append(lesson_period) ).select_related(
'lesson', 'lesson__subject', 'period', 'room'
periods_by_day = OrderedDict() ).prefetch_related(
for weekday, periods in sorted(periods_by_day_unsorted.items()): 'lesson__groups', 'lesson__teachers', 'substitutions'
periods_by_day[dict(TimePeriod.WEEKDAY_CHOICES)[weekday]] = sorted( ).extra(
periods, key=lambda p: p.period.period) select={'_week': wanted_week}
).filter(
Q(lesson__groups__pk=int(request.GET['group'])) | Q(lesson__groups__parent_groups__pk=int(request.GET['group']))
)
# 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)
context['week'] = wanted_week context['week'] = wanted_week
context['group'] = group context['group'] = group
context['periods_by_day'] = periods_by_day context['lesson_periods'] = lesson_periods
context['select_form'] = select_form context['select_form'] = select_form
return render(request, 'alsijil/group_week.html', context) return render(request, 'alsijil/group_week.html', context)
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