From 65d23ddc25760fe44763f24e3e8fcbf7dfa9a0a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Thu, 13 Oct 2016 19:15:25 +0200 Subject: [PATCH] filter speakers that did not answered transport --- .../migrations/0004_auto_20161013_1645.py | 19 +++++++++++++++++++ proposals/forms.py | 2 +- .../templates/proposals/speaker_list.html | 6 ++---- proposals/views.py | 8 +++++++- 4 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 planning/migrations/0004_auto_20161013_1645.py diff --git a/planning/migrations/0004_auto_20161013_1645.py b/planning/migrations/0004_auto_20161013_1645.py new file mode 100644 index 0000000..ed954c7 --- /dev/null +++ b/planning/migrations/0004_auto_20161013_1645.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2016-10-13 16:45 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('planning', '0003_room_label'), + ] + + operations = [ + migrations.AlterModelOptions( + name='room', + options={'ordering': ['name']}, + ), + ] diff --git a/proposals/forms.py b/proposals/forms.py index 23ef5b1..23ae9b4 100644 --- a/proposals/forms.py +++ b/proposals/forms.py @@ -115,7 +115,7 @@ class SpeakerFilterForm(forms.Form): transport = forms.MultipleChoiceField( required=False, widget=forms.CheckboxSelectMultiple, - choices=get_options(Transport), + choices=[('unknown', 'Not answered')] + get_options(Transport), ) accommodation= forms.MultipleChoiceField( required=False, diff --git a/proposals/templates/proposals/speaker_list.html b/proposals/templates/proposals/speaker_list.html index d949d2b..a7bf4ba 100644 --- a/proposals/templates/proposals/speaker_list.html +++ b/proposals/templates/proposals/speaker_list.html @@ -16,17 +16,15 @@
-
+
{% bootstrap_field filter_form.transport layout="horizontal" %} {% bootstrap_field filter_form.transport_booked layout="horizontal" %} {% bootstrap_field filter_form.accommodation layout="horizontal" %} {% bootstrap_field filter_form.accommodation_booked layout="horizontal" %} -
-
{% bootstrap_field filter_form.sound layout="horizontal" %} {% bootstrap_field filter_form.status layout="horizontal" %}
-
+
{% bootstrap_field filter_form.topic layout="horizontal" %}
diff --git a/proposals/views.py b/proposals/views.py index 56ee535..96ca356 100644 --- a/proposals/views.py +++ b/proposals/views.py @@ -352,7 +352,13 @@ def speaker_list(request): data = filter_form.cleaned_data if len(data['transport']): show_filters = True - speakers = speakers.filter(need_transport=True).filter(reduce(lambda x, y: x | y, [Q(transport__pk=pk) for pk in data['transport']])) + q = Q() + if 'unknown' in data['transport']: + data['transport'].remove('unknown') + q |= Q(need_transport=None) + if len(data['transport']): + q |= (Q(need_transport=True) & Q(reduce(lambda x, y: x | y, [Q(transport__pk=pk) for pk in data['transport']]))) + speakers = speakers.filter(q) if len(data['accommodation']): show_filters = True accommodations = list(map(lambda x: None if x == 'unknown' else x, data['accommodation']))