From d5435439c0d6d62676e8a57d4a89b2b76e24a01e Mon Sep 17 00:00:00 2001 From: Fredrik Jonsson <frjo@xdeb.org> Date: Mon, 10 Sep 2018 10:43:05 +0200 Subject: [PATCH] Issue #515 Make CategoryQuestionBlock use Select2MultipleWidget if more than 32 option to maintain usability. --- opentech/apply/categories/blocks.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/opentech/apply/categories/blocks.py b/opentech/apply/categories/blocks.py index 35e9a51f1..ffa193a4e 100644 --- a/opentech/apply/categories/blocks.py +++ b/opentech/apply/categories/blocks.py @@ -6,6 +6,7 @@ from wagtail.core.blocks import BooleanBlock, CharBlock, ChooserBlock, TextBlock from wagtail.core.utils import resolve_model_string from opentech.apply.stream_forms.blocks import OptionalFormFieldBlock +from django_select2.forms import Select2MultipleWidget class ModelChooserBlock(ChooserBlock): @@ -63,7 +64,13 @@ class CategoryQuestionBlock(OptionalFormFieldBlock): def get_widget(self, struct_value): if struct_value['multi']: - return forms.CheckboxSelectMultiple + category = struct_value['category'] + category_size = category.options.count() + # Pick widget according to number of options to maintain good usability. + if category_size < 32: + return forms.CheckboxSelectMultiple + else: + return Select2MultipleWidget else: return forms.RadioSelect -- GitLab