From f961db3130e79315d5f6390f4370bbb72d26000d Mon Sep 17 00:00:00 2001 From: phaynu <32961342+phaynu@users.noreply.github.com> Date: Tue, 24 Oct 2017 23:35:19 -0500 Subject: [PATCH] Extending Choices for Questions in hrapplications to Allow Multiselect (#911) An additional field at the question level defines whether the choices for the question are multi-select or not. The template will render the choices with radio buttons or checkboxes depending on multi-select. Multiple selected choices are saved with a line break between them. --- allianceauth/hrapplications/admin.py | 2 +- .../0006_applicationquestion_multi_select.py | 20 +++++++++++++++++++ allianceauth/hrapplications/models.py | 1 + .../templates/hrapplications/create.html | 2 +- allianceauth/hrapplications/views.py | 4 ++-- 5 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 allianceauth/hrapplications/migrations/0006_applicationquestion_multi_select.py diff --git a/allianceauth/hrapplications/admin.py b/allianceauth/hrapplications/admin.py index e6b80f09..de3cff38 100755 --- a/allianceauth/hrapplications/admin.py +++ b/allianceauth/hrapplications/admin.py @@ -12,7 +12,7 @@ class ChoiceInline(admin.TabularInline): class QuestionAdmin(admin.ModelAdmin): fieldsets = [ - (None, {'fields': ['title', 'help_text']}), + (None, {'fields': ['title', 'help_text', 'multi_select']}), ] inlines = [ChoiceInline] diff --git a/allianceauth/hrapplications/migrations/0006_applicationquestion_multi_select.py b/allianceauth/hrapplications/migrations/0006_applicationquestion_multi_select.py new file mode 100644 index 00000000..28618899 --- /dev/null +++ b/allianceauth/hrapplications/migrations/0006_applicationquestion_multi_select.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2017-10-20 13:51 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('hrapplications', '0005_remove_legacy_models'), + ] + + operations = [ + migrations.AddField( + model_name='applicationquestion', + name='multi_select', + field=models.BooleanField(default=False), + ), + ] diff --git a/allianceauth/hrapplications/models.py b/allianceauth/hrapplications/models.py index a9bf57e8..b5c8f39a 100755 --- a/allianceauth/hrapplications/models.py +++ b/allianceauth/hrapplications/models.py @@ -9,6 +9,7 @@ from allianceauth.eveonline.models import EveCorporationInfo class ApplicationQuestion(models.Model): title = models.CharField(max_length=254, verbose_name='Question') help_text = models.CharField(max_length=254, blank=True, null=True) + multi_select = models.BooleanField(default=False) def __str__(self): return "Question: " + self.title diff --git a/allianceauth/hrapplications/templates/hrapplications/create.html b/allianceauth/hrapplications/templates/hrapplications/create.html index e0770545..1f26562b 100644 --- a/allianceauth/hrapplications/templates/hrapplications/create.html +++ b/allianceauth/hrapplications/templates/hrapplications/create.html @@ -19,7 +19,7 @@
{{ question.help_text }}
{% endif %} {% for choice in question.choices.all %} - +
{% empty %} diff --git a/allianceauth/hrapplications/views.py b/allianceauth/hrapplications/views.py index 8e751feb..493b0368 100755 --- a/allianceauth/hrapplications/views.py +++ b/allianceauth/hrapplications/views.py @@ -62,8 +62,8 @@ def hr_application_create_view(request, form_id=None): application.save() for question in app_form.questions.all(): response = ApplicationResponse(question=question, application=application) - response.answer = request.POST.get(str(question.pk), - "Failed to retrieve answer provided by applicant.") + response.answer = "\n".join(request.POST.getlist(str(question.pk), + "")) response.save() logger.info("%s created %s" % (request.user, application)) return redirect('hrapplications:view')