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 %} +
+ {{ help_text|linebreaks }} +
+ {% endif %} +{% endwith %} + + +
+ If you do not know this person / organisation, you may use this button to autofill appropriate responses. + + +
+ +
+ +
+ {% csrf_token %} + + {% load bootstrap4 %} + {% bootstrap_form form %} + + {% buttons %} + + {% endbuttons %} +
+ +{{ form.negative_responses|json_script:"negative-response-data" }} + + + +{{ form.negative_responses }} diff --git a/people/templates/people/relationship/create.html b/people/templates/people/relationship/create.html index e9d1749..93fdd58 100644 --- a/people/templates/people/relationship/create.html +++ b/people/templates/people/relationship/create.html @@ -15,26 +15,6 @@

Add Relationship

- {% with config.RELATIONSHIP_FORM_HELP as help_text %} - {% if help_text %} -
- {{ help_text|linebreaks }} -
- {% endif %} - {% endwith %} - -
- -
- {% csrf_token %} - - {% load bootstrap4 %} - {% bootstrap_form form %} - - {% buttons %} - - {% endbuttons %} -
+ {% include 'people/includes/relationship_form.html' %} {% endblock %} diff --git a/people/templates/people/relationship/update.html b/people/templates/people/relationship/update.html index a090a44..11022e5 100644 --- a/people/templates/people/relationship/update.html +++ b/people/templates/people/relationship/update.html @@ -18,27 +18,7 @@

Update Relationship

- {% with config.RELATIONSHIP_FORM_HELP as help_text %} - {% if help_text %} -
- {{ help_text|linebreaks }} -
- {% endif %} - {% endwith %} - -
- -
- {% csrf_token %} - - {% load bootstrap4 %} - {% bootstrap_form form %} - - {% buttons %} - - {% endbuttons %} -
+ {% include 'people/includes/relationship_form.html' %} {% endblock %} diff --git a/requirements.txt b/requirements.txt index bbf79b8..4791a26 100644 --- a/requirements.txt +++ b/requirements.txt @@ -42,5 +42,5 @@ six==1.14.0 snowballstemmer==2.0.0 soupsieve==1.9.5 sqlparse==0.3.0 -typed-ast==1.4.1 +typed-ast wrapt==1.11.2