From c3fa9c9a94d308564a19377b035491edc2e10695 Mon Sep 17 00:00:00 2001
From: Dominik George <nik@naturalnet.de>
Date: Fri, 30 Aug 2019 22:29:14 +0200
Subject: [PATCH] Add group selection form. Advances #8.

---
 biscuit/apps/alsijil/forms.py                          | 8 ++++++++
 biscuit/apps/alsijil/templates/alsijil/group_week.html | 8 ++++++++
 biscuit/apps/alsijil/views.py                          | 6 +++++-
 3 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/biscuit/apps/alsijil/forms.py b/biscuit/apps/alsijil/forms.py
index 358e85cf8..ed115eedd 100644
--- a/biscuit/apps/alsijil/forms.py
+++ b/biscuit/apps/alsijil/forms.py
@@ -1,6 +1,8 @@
 from django import forms
 from django.utils.translation import ugettext_lazy as _
 
+from biscuit.core.models import Group
+
 from .models import LessonDocumentation, PersonalNote
 
 
@@ -26,5 +28,11 @@ class PersonalNoteForm(forms.ModelForm):
             pass
 
 
+class SelectForm(forms.Form):
+    group = forms.ModelChoiceField(
+        queryset=Group.objects.annotate(lessons_count=Count('lessons')).filter(lessons_count__gt=0),
+        label=_('Group'), required=False)
+
+
 PersonalNoteFormSet = forms.modelformset_factory(
     PersonalNote, form=PersonalNoteForm, max_num=0, extra=0)
diff --git a/biscuit/apps/alsijil/templates/alsijil/group_week.html b/biscuit/apps/alsijil/templates/alsijil/group_week.html
index 4e9f476de..3687a0c1a 100644
--- a/biscuit/apps/alsijil/templates/alsijil/group_week.html
+++ b/biscuit/apps/alsijil/templates/alsijil/group_week.html
@@ -7,6 +7,14 @@
 {% endblock %}
 
 {% block content %}
+ <form method="get">
+  {% csrf_token %}
+  <ul id="timetable_select_form">
+   {{ select_form.as_ul }}
+  </ul>
+  <input type="submit" value="Select" /> 
+ </form>
+
  {% if group %}
   <div class="row">
    <div class="col-md-7">
diff --git a/biscuit/apps/alsijil/views.py b/biscuit/apps/alsijil/views.py
index 3bc3c5532..0d090863a 100644
--- a/biscuit/apps/alsijil/views.py
+++ b/biscuit/apps/alsijil/views.py
@@ -11,7 +11,7 @@ from biscuit.apps.chronos.models import Lesson, LessonPeriod, TimePeriod
 from biscuit.apps.chronos.util import current_lesson_periods, current_week, week_days
 from biscuit.core.models import Group
 
-from .forms import LessonDocumentationForm, PersonalNoteFormSet
+from .forms import LessonDocumentationForm, PersonalNoteFormSet, SelectForm
 from .models import LessonDocumentation, PersonalNote
 
 
@@ -89,8 +89,12 @@ def group_week(request: HttpRequest, week: Optional[int] = None) -> HttpResponse
     for weekday, periods in sorted(periods_by_day_unsorted.items()):
         periods_by_day[dict(TimePeriod.WEEKDAY_CHOICES)[weekday]] = sorted(periods, key=lambda p: p.period.period)
 
+    # Add a form to filter the view
+    select_form = SelectForm(request.GET or None)
+
     context['week'] = wanted_week
     context['group'] = group
     context['periods_by_day'] = periods_by_day
+    context['select_form'] = select_form
 
     return render(request, 'alsijil/group_week.html', context)
-- 
GitLab