diff --git a/lung_cancer_screening/core/jinja2/layout.jinja b/lung_cancer_screening/core/jinja2/layout.jinja index 8db401db..2982402e 100644 --- a/lung_cancer_screening/core/jinja2/layout.jinja +++ b/lung_cancer_screening/core/jinja2/layout.jinja @@ -9,6 +9,20 @@ {% block pageTitle %}Lung Cancer Screening - NHS{% endblock %} +{% block beforeContent %} + {% if back_link_url %} + + {% endif %} +{% endblock beforeContent %} + + {% block content %} {% block page_content %} {% endblock page_content %} diff --git a/lung_cancer_screening/nhsuk_forms/decimal_field.py b/lung_cancer_screening/nhsuk_forms/decimal_field.py index 0a7520d3..2029c26e 100644 --- a/lung_cancer_screening/nhsuk_forms/decimal_field.py +++ b/lung_cancer_screening/nhsuk_forms/decimal_field.py @@ -11,6 +11,7 @@ def __init__( ): kwargs["template_name"] = "input.jinja" + self.suffix = kwargs.pop("suffix", None) self.hint = hint self.classes = classes self.label_classes = label_classes diff --git a/lung_cancer_screening/nhsuk_forms/imperial_height_form.py b/lung_cancer_screening/nhsuk_forms/imperial_height_field.py similarity index 81% rename from lung_cancer_screening/nhsuk_forms/imperial_height_form.py rename to lung_cancer_screening/nhsuk_forms/imperial_height_field.py index 92506138..db50275e 100644 --- a/lung_cancer_screening/nhsuk_forms/imperial_height_form.py +++ b/lung_cancer_screening/nhsuk_forms/imperial_height_field.py @@ -45,18 +45,34 @@ class ImperialHeightField(forms.MultiValueField): def __init__(self, *args, **kwargs): error_messages = kwargs.get("error_messages", {}) + between_feet="Feet must be between 4 and 8" + feet_kwargs = { + "min_value": 4, + "max_value": 8, "error_messages": { - 'invalid': 'Feet must be in whole numbers', **error_messages, + 'invalid': 'Feet must be in whole numbers', + 'min_value': between_feet, + 'max_value': between_feet, + 'incomplete': between_feet, }, } + + between_inches = "Inches must be between 0 and 11" + inches_kwargs = { + "min_value": 0, + "max_value": 11, "error_messages": { - 'invalid': 'Inches must be in whole numbers', **error_messages, + 'invalid': 'Inches must be in whole numbers', + 'min_value': between_inches, + 'max_value': between_inches, + 'incomplete': between_inches, }, } + fields = ( IntegerField(**feet_kwargs), IntegerField(**inches_kwargs), diff --git a/lung_cancer_screening/nhsuk_forms/integer_field.py b/lung_cancer_screening/nhsuk_forms/integer_field.py index 8e513dd2..d11c3178 100644 --- a/lung_cancer_screening/nhsuk_forms/integer_field.py +++ b/lung_cancer_screening/nhsuk_forms/integer_field.py @@ -12,6 +12,7 @@ def __init__( ): kwargs["template_name"] = "input.jinja" + self.suffix = kwargs.pop("suffix", None) self.hint = hint self.classes = classes self.label_classes = label_classes diff --git a/lung_cancer_screening/nhsuk_forms/jinja2/imperial-height-input.jinja b/lung_cancer_screening/nhsuk_forms/jinja2/imperial-height-input.jinja index 76b983dd..da0ecd8a 100644 --- a/lung_cancer_screening/nhsuk_forms/jinja2/imperial-height-input.jinja +++ b/lung_cancer_screening/nhsuk_forms/jinja2/imperial-height-input.jinja @@ -21,7 +21,6 @@ {{ input({ "label": { "text": "Feet", - "classes": "nhsuk-fieldset__legend--m", "isPageHeading": false }, "hint": { @@ -30,8 +29,9 @@ "id": field.auto_id + "_0", "name": field.html_name + "_0", "value": field.subwidgets.0.data.value, - "classes": "nhsuk-input--width-2" + field_error_classes, - "type": "number" + "classes": "nhsuk-input--width-4" + field_error_classes, + "type": "number", + "suffix": "ft" }) }} @@ -39,14 +39,14 @@ {{ input({ "label": { "text": "Inches", - "classes": "nhsuk-fieldset__legend--m", "isPageHeading": false }, "id": field.auto_id + "_1", "name": field.html_name + "_1", "value": field.subwidgets.1.data.value, - "classes": "nhsuk-input--width-2" + field_error_classes, - "type": "number" + "classes": "nhsuk-input--width-4" + field_error_classes, + "type": "number", + "suffix": "in" }) }} diff --git a/lung_cancer_screening/nhsuk_forms/jinja2/input.jinja b/lung_cancer_screening/nhsuk_forms/jinja2/input.jinja index b1f8e9fc..13aba3a5 100644 --- a/lung_cancer_screening/nhsuk_forms/jinja2/input.jinja +++ b/lung_cancer_screening/nhsuk_forms/jinja2/input.jinja @@ -15,6 +15,7 @@ "hint": { "text": unbound_field.hint } if unbound_field.hint, + "suffix": unbound_field.suffix if unbound_field.suffix, "id": field.auto_id, "name": field.html_name, "value": field.value() or "", diff --git a/lung_cancer_screening/nhsuk_forms/tests/unit/test_decimal_field.py b/lung_cancer_screening/nhsuk_forms/tests/unit/test_decimal_field.py new file mode 100644 index 00000000..6cff1c43 --- /dev/null +++ b/lung_cancer_screening/nhsuk_forms/tests/unit/test_decimal_field.py @@ -0,0 +1,38 @@ +from django.test import TestCase +from django.forms import Form +from ...decimal_field import DecimalField + + +class TestDecimalField(TestCase): + def test_renders_nhs_input(self): + class TestForm(Form): + field = DecimalField(label="Abc", initial=1, max_value=10) + self.assertHTMLEqual( + TestForm()["field"].as_field_group(), + """ +