diff --git a/.dockerignore b/.dockerignore index 4ea3e66..170d567 100644 --- a/.dockerignore +++ b/.dockerignore @@ -8,6 +8,7 @@ venv/ Caddyfile docker-compose.yml +.env settings.ini mail.log/ /roles/ diff --git a/.gitignore b/.gitignore index b9fd9b6..31b1435 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ db.sqlite3 debug.log* # Configuration +.env settings.ini deployment-key* diff --git a/people/forms.py b/people/forms.py index 7a41282..925ea56 100644 --- a/people/forms.py +++ b/people/forms.py @@ -47,6 +47,7 @@ class DynamicAnswerSetBase(forms.Form): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + self.negative_responses = {} field_order = [] for question in self.question_model.objects.all(): @@ -86,6 +87,13 @@ class DynamicAnswerSetBase(forms.Form): self.fields[field_name] = field field_order.append(field_name) + try: + negative_response = question.answers.get(is_negative_response=True) + self.negative_responses[field_name] = negative_response.id + + except (self.answer_model.DoesNotExist, self.answer_model.MultipleObjectsReturned): + pass + if question.allow_free_text and not self.as_filters: free_field = forms.CharField(label=f'{question} free text', required=False) diff --git a/people/migrations/0054_add_option_for_auto_negative_response.py b/people/migrations/0054_add_option_for_auto_negative_response.py new file mode 100644 index 0000000..4a7125a --- /dev/null +++ b/people/migrations/0054_add_option_for_auto_negative_response.py @@ -0,0 +1,33 @@ +# Generated by Django 2.2.10 on 2022-03-31 17:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('people', '0053_organisation_order_name'), + ] + + operations = [ + migrations.AddField( + model_name='organisationquestionchoice', + name='is_negative_response', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='organisationrelationshipquestionchoice', + name='is_negative_response', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='personquestionchoice', + name='is_negative_response', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='relationshipquestionchoice', + name='is_negative_response', + field=models.BooleanField(default=False), + ), + ] diff --git a/people/models/question.py b/people/models/question.py index dd27eba..5d455e1 100644 --- a/people/models/question.py +++ b/people/models/question.py @@ -114,6 +114,9 @@ class QuestionChoice(models.Model): #: Position of this answer in the list order = models.SmallIntegerField(default=0, blank=False, null=False) + #: Does this answer represent the negative response? + is_negative_response = models.BooleanField(default=False) + @property def slug(self) -> str: return slugify(self.text) diff --git a/people/templates/people/includes/relationship_form.html b/people/templates/people/includes/relationship_form.html new file mode 100644 index 0000000..15642a9 --- /dev/null +++ b/people/templates/people/includes/relationship_form.html @@ -0,0 +1,67 @@ +{% with config.RELATIONSHIP_FORM_HELP as help_text %} + {% if help_text %} +