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