From 16987fcaf049216b0e1067b70882c9a1620932e1 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. --- hrapplications/admin.py | 2 +- .../0003_applicationquestion_multi_select.py | 20 +++++++++++++++++++ hrapplications/models.py | 1 + hrapplications/views.py | 4 ++-- .../registered/hrapplicationcreate.html | 2 +- 5 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 hrapplications/migrations/0003_applicationquestion_multi_select.py diff --git a/hrapplications/admin.py b/hrapplications/admin.py index c1d4c4d5..cb2caf9a 100755 --- a/hrapplications/admin.py +++ b/hrapplications/admin.py @@ -16,7 +16,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/hrapplications/migrations/0003_applicationquestion_multi_select.py b/hrapplications/migrations/0003_applicationquestion_multi_select.py new file mode 100644 index 00000000..b41fd876 --- /dev/null +++ b/hrapplications/migrations/0003_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', '0002_choices_for_questions'), + ] + + operations = [ + migrations.AddField( + model_name='applicationquestion', + name='multi_select', + field=models.BooleanField(default=False), + ), + ] diff --git a/hrapplications/models.py b/hrapplications/models.py index af660ee6..4859b402 100755 --- a/hrapplications/models.py +++ b/hrapplications/models.py @@ -13,6 +13,7 @@ from authentication.models import AuthServicesInfo 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/hrapplications/views.py b/hrapplications/views.py index d06b2050..312365ca 100755 --- a/hrapplications/views.py +++ b/hrapplications/views.py @@ -71,8 +71,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('auth_hrapplications_view') diff --git a/stock/templates/registered/hrapplicationcreate.html b/stock/templates/registered/hrapplicationcreate.html index 52251e84..a5797f45 100644 --- a/stock/templates/registered/hrapplicationcreate.html +++ b/stock/templates/registered/hrapplicationcreate.html @@ -20,7 +20,7 @@