diff --git a/lung_cancer_screening/questions/jinja2/weight.jinja b/lung_cancer_screening/questions/jinja2/weight.jinja
index 79da19b0..3a372ac6 100644
--- a/lung_cancer_screening/questions/jinja2/weight.jinja
+++ b/lung_cancer_screening/questions/jinja2/weight.jinja
@@ -10,17 +10,6 @@
'metric': 'kilograms'
} %}
-{% block beforeContent %}
-
diff --git a/lung_cancer_screening/questions/presenters/response_set_presenter.py b/lung_cancer_screening/questions/presenters/response_set_presenter.py
index 83ee2b12..5b638c9f 100644
--- a/lung_cancer_screening/questions/presenters/response_set_presenter.py
+++ b/lung_cancer_screening/questions/presenters/response_set_presenter.py
@@ -196,16 +196,16 @@ def about_you_responses_items(self):
self.weight,
"questions:weight",
),
- self._check_your_answer_item(
- "Sex at birth",
- self.sex_at_birth,
- "questions:sex_at_birth",
- ),
self._check_your_answer_item(
"Gender identity",
self.gender,
"questions:gender",
),
+ self._check_your_answer_item(
+ "Sex at birth",
+ self.sex_at_birth,
+ "questions:sex_at_birth",
+ ),
self._check_your_answer_item(
"Ethnic background",
self.ethnicity,
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_age_when_started_smoking.py b/lung_cancer_screening/questions/tests/unit/views/test_age_when_started_smoking.py
index 38a609d2..726c1202 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_age_when_started_smoking.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_age_when_started_smoking.py
@@ -43,6 +43,24 @@ def test_redirects_when_the_user_is_not_eligible(self):
self.assertRedirects(response, reverse("questions:agree_terms_of_use"))
+ def test_back_link_url_is_responses_if_change_query_param_is_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:age_when_started_smoking", query={"change": "True"})
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_is_relatives_age_when_diagnosed_if_change_query_param_is_not_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:age_when_started_smoking")
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:relatives_age_when_diagnosed"))
+
def test_responds_successfully(self):
ResponseSetFactory.create(user=self.user, eligible=True)
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_asbestos_exposure.py b/lung_cancer_screening/questions/tests/unit/views/test_asbestos_exposure.py
index ebd50d7d..77ce81b0 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_asbestos_exposure.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_asbestos_exposure.py
@@ -52,6 +52,23 @@ def test_responds_successfully(self):
self.assertEqual(response.status_code, 200)
+ def test_back_link_url_is_responses_if_change_query_param_is_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:asbestos_exposure", query={"change": "True"})
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+
+ def test_back_link_url_is_respiratory_conditions_if_change_query_param_is_not_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(reverse("questions:asbestos_exposure"))
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:respiratory_conditions"))
+
@tag("AsbestosExposure")
class TestPostAsbestosExposure(TestCase):
def setUp(self):
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_cancer_diagnosis.py b/lung_cancer_screening/questions/tests/unit/views/test_cancer_diagnosis.py
index 5d3a6863..92617d63 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_cancer_diagnosis.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_cancer_diagnosis.py
@@ -43,6 +43,24 @@ def test_redirects_when_the_user_is_not_eligible(self):
self.assertRedirects(response, reverse("questions:agree_terms_of_use"))
+ def test_back_link_url_is_responses_if_change_query_param_is_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:cancer_diagnosis", query={"change": "True"})
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_is_asbestos_exposure_if_change_query_param_is_not_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:cancer_diagnosis")
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:asbestos_exposure"))
+
def test_responds_successfully(self):
ResponseSetFactory.create(user=self.user, eligible=True)
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_date_of_birth.py b/lung_cancer_screening/questions/tests/unit/views/test_date_of_birth.py
index a636ace8..e19895c2 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_date_of_birth.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_date_of_birth.py
@@ -81,6 +81,19 @@ def test_responds_successfully(self):
self.assertEqual(response.status_code, 200)
+ def test_get_back_link_url_points_to_responses_if_change_query_param_is_true(self):
+ response = self.client.get(
+ reverse("questions:date_of_birth") + "?change=True"
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_get_back_link_url_points_to_have_you_ever_smoked_if_change_query_param_is_not_true(self):
+ response = self.client.get(
+ reverse("questions:date_of_birth")
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:have_you_ever_smoked"))
@tag("DateOfBirth")
class TestPostDateOfBirth(TestCase):
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_education.py b/lung_cancer_screening/questions/tests/unit/views/test_education.py
index 81da78e0..d0f140cc 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_education.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_education.py
@@ -46,6 +46,24 @@ def test_redirects_when_the_user_is_not_eligible(self):
self.assertRedirects(response, reverse("questions:agree_terms_of_use"))
+ def test_back_link_url_is_responses_if_change_query_param_is_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:education", query={"change": "True"})
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_is_ethnicity_if_change_query_param_is_not_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:education")
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:ethnicity"))
+
def test_responds_successfully(self):
ResponseSetFactory.create(user=self.user, eligible=True)
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_ethnicity.py b/lung_cancer_screening/questions/tests/unit/views/test_ethnicity.py
index ea530f96..38bd3b66 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_ethnicity.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_ethnicity.py
@@ -45,6 +45,22 @@ def test_redirects_when_the_user_is_not_eligible(self):
self.assertRedirects(response, reverse("questions:agree_terms_of_use"))
+ def test_back_link_url_is_responses_if_change_query_param_is_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:ethnicity", query={"change": "True"})
+ )
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_is_sex_at_birth_if_change_query_param_is_not_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:ethnicity")
+ )
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:sex_at_birth"))
+
def test_responds_successfully(self):
ResponseSetFactory.create(user=self.user, eligible=True)
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_family_history_lung_cancer.py b/lung_cancer_screening/questions/tests/unit/views/test_family_history_lung_cancer.py
index 5aaf6c7b..45316db5 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_family_history_lung_cancer.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_family_history_lung_cancer.py
@@ -45,6 +45,22 @@ def test_redirects_when_the_user_is_not_eligible(self):
self.assertRedirects(response, reverse("questions:agree_terms_of_use"))
+ def test_back_link_url_is_responses_if_change_query_param_is_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:family_history_lung_cancer", query={"change": "True"})
+ )
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_is_cancer_diagnosis_if_change_query_param_is_not_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:family_history_lung_cancer")
+ )
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:cancer_diagnosis"))
+
def test_responds_successfully(self):
ResponseSetFactory.create(user=self.user, eligible=True)
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_gender.py b/lung_cancer_screening/questions/tests/unit/views/test_gender.py
index 335bd2de..0974cf49 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_gender.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_gender.py
@@ -52,6 +52,21 @@ def test_responds_successfully(self):
self.assertEqual(response.status_code, 200)
+ def test_back_link_url_is_responses_if_change_query_param_is_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:gender", query={"change": "True"})
+ )
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_is_weight_if_change_query_param_is_not_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(reverse("questions:gender"))
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:weight"))
+
@tag("Gender")
class TestPostGender(TestCase):
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_have_you_ever_smoked.py b/lung_cancer_screening/questions/tests/unit/views/test_have_you_ever_smoked.py
index 96a8286b..d69a45e1 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_have_you_ever_smoked.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_have_you_ever_smoked.py
@@ -46,6 +46,30 @@ def test_get_responds_successfully(self):
self.assertEqual(response.status_code, 200)
+ def test_get_back_link_url_points_to_responses_if_change_query_param_is_true(self):
+ TermsOfUseResponseFactory.create(
+ response_set=ResponseSetFactory.create(user=self.user),
+ value=True
+ )
+
+ response = self.client.get(
+ reverse("questions:have_you_ever_smoked") + "?change=True"
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_get_back_link_url_points_to_agree_terms_of_use_if_change_query_param_is_not_true(self):
+ TermsOfUseResponseFactory.create(
+ response_set=ResponseSetFactory.create(user=self.user),
+ value=True
+ )
+
+ response = self.client.get(
+ reverse("questions:have_you_ever_smoked")
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:agree_terms_of_use"))
+
@tag("HaveYouEverSmoked")
class TestPostHaveYouEverSmoked(TestCase):
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_height.py b/lung_cancer_screening/questions/tests/unit/views/test_height.py
index 713f1ae1..0c7e124b 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_height.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_height.py
@@ -85,6 +85,25 @@ def test_renders_the_imperial_form_if_specified(self):
self.assertContains(response, "Feet")
self.assertContains(response, "Inches")
+ def test_back_link_url_is_check_your_answers_if_changing_responses(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:height"), {"change": "True"}
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_is_check_need_appointment_if_not_changing_responses(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:height")
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:check_need_appointment"))
+
+
@tag("Height")
class TestPostHeight(TestCase):
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_periods_when_you_stopped_smoking.py b/lung_cancer_screening/questions/tests/unit/views/test_periods_when_you_stopped_smoking.py
index 622f4607..a995a8c4 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_periods_when_you_stopped_smoking.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_periods_when_you_stopped_smoking.py
@@ -47,6 +47,17 @@ def test_redirects_when_the_user_is_not_eligible(self):
self.assertRedirects(response, reverse("questions:agree_terms_of_use"))
+ def test_back_link_url_is_responses_if_change_query_param_is_true(self):
+ response = self.client.get(
+ reverse("questions:periods_when_you_stopped_smoking", query={"change": "True"})
+ )
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_is_age_when_started_smoking_if_change_query_param_is_not_true(self):
+ response = self.client.get(
+ reverse("questions:periods_when_you_stopped_smoking")
+ )
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:age_when_started_smoking"))
def test_responds_successfully(self):
response = self.client.get(reverse("questions:periods_when_you_stopped_smoking"))
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_relatives_age_when_diagnosed.py b/lung_cancer_screening/questions/tests/unit/views/test_relatives_age_when_diagnosed.py
index 3f7fb17a..ead99c9e 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_relatives_age_when_diagnosed.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_relatives_age_when_diagnosed.py
@@ -75,6 +75,29 @@ def test_responds_redirect_for_no_family_history(self):
fetch_redirect_response=False
)
+ def test_back_link_url_points_to_responses_if_change_query_param_is_true(self):
+ FamilyHistoryLungCancerResponseFactory(
+ response_set=ResponseSetFactory.create(user=self.user, eligible=True),
+ value=FamilyHistoryLungCancerValues.YES
+ )
+
+ response = self.client.get(
+ reverse("questions:relatives_age_when_diagnosed") + "?change=True"
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_points_to_family_history_lung_cancer_if_change_query_param_is_not_true(self):
+ FamilyHistoryLungCancerResponseFactory(
+ response_set=ResponseSetFactory.create(user=self.user, eligible=True),
+ value=FamilyHistoryLungCancerValues.YES
+ )
+
+ response = self.client.get(
+ reverse("questions:relatives_age_when_diagnosed")
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:family_history_lung_cancer"))
@tag("RelativesAgeWhenDiagnosed")
class TestPostRelativesAgeWhenDiagnosed(TestCase):
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_respiratory_conditions.py b/lung_cancer_screening/questions/tests/unit/views/test_respiratory_conditions.py
index cdfeac99..fd5c73e9 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_respiratory_conditions.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_respiratory_conditions.py
@@ -44,6 +44,24 @@ def test_redirects_when_the_user_is_not_eligible(self):
self.assertRedirects(response, reverse("questions:agree_terms_of_use"))
+ def test_back_link_url_points_to_responses_if_change_query_param_is_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:respiratory_conditions") + "?change=True"
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_points_to_education_if_change_query_param_is_not_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:respiratory_conditions")
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:education"))
+
def test_responds_successfully(self):
ResponseSetFactory.create(user=self.user, eligible=True)
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_sex_at_birth.py b/lung_cancer_screening/questions/tests/unit/views/test_sex_at_birth.py
index 5b3513e3..495691b6 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_sex_at_birth.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_sex_at_birth.py
@@ -45,6 +45,22 @@ def test_redirects_when_the_user_is_not_eligible(self):
self.assertRedirects(response, reverse("questions:agree_terms_of_use"))
+ def test_back_link_url_points_to_responses_if_change_query_param_is_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+ response = self.client.get(
+ reverse("questions:sex_at_birth") + "?change=True"
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_points_to_gender_if_change_query_param_is_not_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+ response = self.client.get(
+ reverse("questions:sex_at_birth")
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:gender"))
+
def test_responds_successfully(self):
ResponseSetFactory.create(user=self.user, eligible=True)
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_smoking_current.py b/lung_cancer_screening/questions/tests/unit/views/test_smoking_current.py
index bbac0332..83d4cc0b 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_smoking_current.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_smoking_current.py
@@ -122,6 +122,18 @@ def test_has_a_back_link_to_the_previous_tobacco_type_when_on_a_later_type_with_
})
)
+ def test_has_a_back_link_to_responses_when_on_current_smoking_change_responses(self):
+ response = self.client.get(
+ reverse("questions:smoking_current", kwargs = {
+ "tobacco_type": self.tobacco_smoking_history.url_type()
+ }, query={"change": "True"})
+ )
+
+ self.assertEqual(
+ response.context_data["back_link_url"],
+ reverse("questions:responses")
+ )
+
@tag("SmokingCurrent")
class TestPostSmokingCurrent(TestCase):
def setUp(self):
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_types_tobacco_smoking.py b/lung_cancer_screening/questions/tests/unit/views/test_types_tobacco_smoking.py
index 1031a5d0..ff80515a 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_types_tobacco_smoking.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_types_tobacco_smoking.py
@@ -59,6 +59,30 @@ def test_get_responds_successfully(self):
self.assertEqual(response.status_code, 200)
+ def test_get_back_link_url_returns_responses_url_if_changing_responses(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:types_tobacco_smoking") + "?change=True"
+ )
+
+ self.assertEqual(
+ response.context_data["back_link_url"],
+ reverse("questions:responses")
+ )
+
+ def test_get_back_link_url_returns_periods_when_you_stopped_smoking_url_if_not_changing_responses(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:types_tobacco_smoking")
+ )
+
+ self.assertEqual(
+ response.context_data["back_link_url"],
+ reverse("questions:periods_when_you_stopped_smoking")
+ )
+
@tag("TypesTobaccoSmoking")
class TestPostTypesTobaccoSmoking(TestCase):
diff --git a/lung_cancer_screening/questions/tests/unit/views/test_weight.py b/lung_cancer_screening/questions/tests/unit/views/test_weight.py
index 74aba1f9..5f9ecd4f 100644
--- a/lung_cancer_screening/questions/tests/unit/views/test_weight.py
+++ b/lung_cancer_screening/questions/tests/unit/views/test_weight.py
@@ -85,6 +85,25 @@ def test_renders_the_imperial_form_if_specified(self):
self.assertContains(response, "Stone")
self.assertContains(response, "Pounds")
+ def test_back_link_url_is_responses_if_change_query_param_is_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:weight"),
+ {"change": "True"}
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:responses"))
+
+ def test_back_link_url_is_height_if_change_query_param_is_not_true(self):
+ ResponseSetFactory.create(user=self.user, eligible=True)
+
+ response = self.client.get(
+ reverse("questions:weight")
+ )
+
+ self.assertEqual(response.context_data["back_link_url"], reverse("questions:height"))
+
@tag("Weight")
class TestPostWeight(TestCase):
@@ -174,3 +193,4 @@ def test_responds_with_422_if_the_response_fails_to_create(self):
)
self.assertEqual(response.status_code, 422)
+
diff --git a/lung_cancer_screening/questions/views/age_when_started_smoking.py b/lung_cancer_screening/questions/views/age_when_started_smoking.py
index f75444bf..980e8c32 100644
--- a/lung_cancer_screening/questions/views/age_when_started_smoking.py
+++ b/lung_cancer_screening/questions/views/age_when_started_smoking.py
@@ -12,14 +12,18 @@ class AgeWhenStartedSmokingView(LoginRequiredMixin, EnsureResponseSet, EnsureEli
form_class = AgeWhenStartedSmokingForm
model = AgeWhenStartedSmokingResponse
success_url = reverse_lazy("questions:periods_when_you_stopped_smoking")
- back_link_url = reverse_lazy("questions:relatives_age_when_diagnosed")
page_title = "How old were you when you started smoking? – NHS"
def get_success_url(self):
- if self.should_redirect_to_responses(self.request):
+ if self.is_changing_responses():
return reverse(
"questions:periods_when_you_stopped_smoking",
query={"change": "True"}
)
else:
return super().get_success_url()
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:relatives_age_when_diagnosed")
diff --git a/lung_cancer_screening/questions/views/asbestos_exposure.py b/lung_cancer_screening/questions/views/asbestos_exposure.py
index 3bad7239..37981c58 100644
--- a/lung_cancer_screening/questions/views/asbestos_exposure.py
+++ b/lung_cancer_screening/questions/views/asbestos_exposure.py
@@ -1,4 +1,4 @@
-from django.urls import reverse_lazy
+from django.urls import reverse, reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .mixins.ensure_response_set import EnsureResponseSet
@@ -13,4 +13,9 @@ class AsbestosExposureView(LoginRequiredMixin, EnsureResponseSet, EnsureEligible
form_class = AsbestosExposureForm
model = AsbestosExposureResponse
success_url = reverse_lazy("questions:cancer_diagnosis")
- back_link_url = reverse_lazy("questions:respiratory_conditions")
+
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:respiratory_conditions")
diff --git a/lung_cancer_screening/questions/views/cancer_diagnosis.py b/lung_cancer_screening/questions/views/cancer_diagnosis.py
index dcfd47ad..12cb0ffe 100644
--- a/lung_cancer_screening/questions/views/cancer_diagnosis.py
+++ b/lung_cancer_screening/questions/views/cancer_diagnosis.py
@@ -1,4 +1,4 @@
-from django.urls import reverse_lazy
+from django.urls import reverse, reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .mixins.ensure_response_set import EnsureResponseSet
@@ -13,4 +13,8 @@ class CancerDiagnosisView(LoginRequiredMixin, EnsureResponseSet, EnsureEligibleM
form_class = CancerDiagnosisForm
model = CancerDiagnosisResponse
success_url = reverse_lazy("questions:family_history_lung_cancer")
- back_link_url = reverse_lazy("questions:asbestos_exposure")
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:asbestos_exposure")
diff --git a/lung_cancer_screening/questions/views/date_of_birth.py b/lung_cancer_screening/questions/views/date_of_birth.py
index 5059c74f..30a081de 100644
--- a/lung_cancer_screening/questions/views/date_of_birth.py
+++ b/lung_cancer_screening/questions/views/date_of_birth.py
@@ -25,7 +25,6 @@ class DateOfBirthView(LoginRequiredMixin, EnsureResponseSet, EnsureAcceptedTerms
form_class = DateOfBirthForm
model = DateOfBirthResponse
success_url = reverse_lazy("questions:check_need_appointment")
- back_link_url = reverse_lazy("questions:have_you_ever_smoked")
page_title: str = "What is your date of birth? – Check if you need a lung scan – NHS"
def get_success_url(self):
@@ -33,3 +32,8 @@ def get_success_url(self):
return super().get_success_url()
else:
return reverse("questions:age_range_exit")
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:have_you_ever_smoked")
diff --git a/lung_cancer_screening/questions/views/education.py b/lung_cancer_screening/questions/views/education.py
index ec69b662..21290f38 100644
--- a/lung_cancer_screening/questions/views/education.py
+++ b/lung_cancer_screening/questions/views/education.py
@@ -1,4 +1,4 @@
-from django.urls import reverse_lazy
+from django.urls import reverse, reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .mixins.ensure_response_set import EnsureResponseSet
@@ -13,4 +13,8 @@ class EducationView(LoginRequiredMixin, EnsureResponseSet, EnsureEligibleMixin,
form_class = EducationForm
model = EducationResponse
success_url = reverse_lazy("questions:respiratory_conditions")
- back_link_url = reverse_lazy("questions:ethnicity")
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:ethnicity")
diff --git a/lung_cancer_screening/questions/views/ethnicity.py b/lung_cancer_screening/questions/views/ethnicity.py
index a4ee8a44..55474f34 100644
--- a/lung_cancer_screening/questions/views/ethnicity.py
+++ b/lung_cancer_screening/questions/views/ethnicity.py
@@ -1,4 +1,4 @@
-from django.urls import reverse_lazy
+from django.urls import reverse, reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .mixins.ensure_response_set import EnsureResponseSet
@@ -13,4 +13,8 @@ class EthnicityView(LoginRequiredMixin, EnsureResponseSet, EnsureEligibleMixin,
form_class = EthnicityForm
model = EthnicityResponse
success_url = reverse_lazy("questions:education")
- back_link_url = reverse_lazy("questions:sex_at_birth")
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:sex_at_birth")
diff --git a/lung_cancer_screening/questions/views/family_history_lung_cancer.py b/lung_cancer_screening/questions/views/family_history_lung_cancer.py
index 70fb5837..d19c8f4c 100644
--- a/lung_cancer_screening/questions/views/family_history_lung_cancer.py
+++ b/lung_cancer_screening/questions/views/family_history_lung_cancer.py
@@ -15,11 +15,10 @@ class FamilyHistoryLungCancerView(LoginRequiredMixin, EnsureResponseSet, EnsureE
form_class = FamilyHistoryLungCancerForm
model = FamilyHistoryLungCancerResponse
success_url = reverse_lazy("questions:age_when_started_smoking")
- back_link_url = reverse_lazy("questions:cancer_diagnosis")
def get_success_url(self):
if self.object.is_truthy():
- if self.should_redirect_to_responses(self.request):
+ if self.is_changing_responses():
return reverse(
"questions:relatives_age_when_diagnosed",
query={"change": "True"}
@@ -28,3 +27,8 @@ def get_success_url(self):
return reverse("questions:relatives_age_when_diagnosed")
else:
return super().get_success_url()
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:cancer_diagnosis")
diff --git a/lung_cancer_screening/questions/views/gender.py b/lung_cancer_screening/questions/views/gender.py
index 78105128..969a534d 100644
--- a/lung_cancer_screening/questions/views/gender.py
+++ b/lung_cancer_screening/questions/views/gender.py
@@ -1,4 +1,4 @@
-from django.urls import reverse_lazy
+from django.urls import reverse, reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .mixins.ensure_response_set import EnsureResponseSet
@@ -13,5 +13,9 @@ class GenderView(LoginRequiredMixin, EnsureResponseSet, EnsureEligibleMixin, Que
form_class = GenderForm
model = GenderResponse
success_url = reverse_lazy("questions:sex_at_birth")
- back_link_url = reverse_lazy("questions:weight")
page_title: str = "Your gender identity – Check if you need a lung scan – NHS"
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:weight")
diff --git a/lung_cancer_screening/questions/views/have_you_ever_smoked.py b/lung_cancer_screening/questions/views/have_you_ever_smoked.py
index be4b9274..42de12d8 100644
--- a/lung_cancer_screening/questions/views/have_you_ever_smoked.py
+++ b/lung_cancer_screening/questions/views/have_you_ever_smoked.py
@@ -17,10 +17,14 @@ class HaveYouEverSmokedView(LoginRequiredMixin, EnsureResponseSet, EnsureAccepte
form_class = HaveYouEverSmokedForm
model = HaveYouEverSmokedResponse
success_url = reverse_lazy("questions:date_of_birth")
- back_link_url = reverse_lazy("questions:agree_terms_of_use")
def get_success_url(self):
if self.object.is_eligible():
return super().get_success_url()
else:
return reverse("questions:non_smoker_exit")
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:agree_terms_of_use")
diff --git a/lung_cancer_screening/questions/views/height.py b/lung_cancer_screening/questions/views/height.py
index 5b76aaa8..1a19627c 100644
--- a/lung_cancer_screening/questions/views/height.py
+++ b/lung_cancer_screening/questions/views/height.py
@@ -1,4 +1,4 @@
-from django.urls import reverse_lazy
+from django.urls import reverse, reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .mixins.ensure_response_set import EnsureResponseSet
@@ -17,7 +17,7 @@ class HeightView(LoginRequiredMixin, EnsureResponseSet, EnsureEligibleMixin, Que
template_name = "height.jinja"
model = HeightResponse
success_url = reverse_lazy("questions:weight")
- back_link_url = reverse_lazy("questions:check_need_appointment")
+
def get_form_class(self):
unit = self.get_unit()
@@ -38,3 +38,8 @@ def get_unit(self):
if response.imperial and unit != "metric":
unit = "imperial"
return unit
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:check_need_appointment")
diff --git a/lung_cancer_screening/questions/views/periods_when_you_stopped_smoking.py b/lung_cancer_screening/questions/views/periods_when_you_stopped_smoking.py
index d770ec78..8b751674 100644
--- a/lung_cancer_screening/questions/views/periods_when_you_stopped_smoking.py
+++ b/lung_cancer_screening/questions/views/periods_when_you_stopped_smoking.py
@@ -1,4 +1,4 @@
-from django.urls import reverse_lazy
+from django.urls import reverse, reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .mixins.ensure_response_set import EnsureResponseSet
@@ -13,4 +13,8 @@ class PeriodsWhenYouStoppedSmokingView(LoginRequiredMixin, EnsureResponseSet, En
form_class = PeriodsWhenYouStoppedSmokingForm
model = PeriodsWhenYouStoppedSmokingResponse
success_url = reverse_lazy("questions:types_tobacco_smoking")
- back_link_url = reverse_lazy("questions:age_when_started_smoking")
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:age_when_started_smoking")
diff --git a/lung_cancer_screening/questions/views/question_base_view.py b/lung_cancer_screening/questions/views/question_base_view.py
index 1ffe5e16..c0dddb09 100644
--- a/lung_cancer_screening/questions/views/question_base_view.py
+++ b/lung_cancer_screening/questions/views/question_base_view.py
@@ -6,11 +6,11 @@
class QuestionBaseView(UpdateView):
page_title = "Check if you need a lung scan – NHS"
- def should_redirect_to_responses(self, request):
- return bool(request.POST.get("change"))
+ def is_changing_responses(self):
+ return self.request.GET.get("change") == "True" or self.request.POST.get("change") == "True"
def get_change_query_params(self):
- if not self.should_redirect_to_responses(self.request):
+ if not self.is_changing_responses():
return {}
return {"change": "True"}
@@ -25,7 +25,7 @@ def get_context_data(self, **kwargs):
return context
def get_success_url(self):
- if self.should_redirect_to_responses(self.request):
+ if self.is_changing_responses():
return reverse("questions:responses")
else:
return super().get_success_url()
diff --git a/lung_cancer_screening/questions/views/relatives_age_when_diagnosed.py b/lung_cancer_screening/questions/views/relatives_age_when_diagnosed.py
index b79bb8e1..44c1d76d 100644
--- a/lung_cancer_screening/questions/views/relatives_age_when_diagnosed.py
+++ b/lung_cancer_screening/questions/views/relatives_age_when_diagnosed.py
@@ -15,7 +15,6 @@ class RelativesAgeWhenDiagnosedView(LoginRequiredMixin, EnsureResponseSet, Ensur
form_class = RelativesAgeWhenDiagnosedForm
model = RelativesAgeWhenDiagnosedResponse
success_url = reverse_lazy("questions:age_when_started_smoking")
- back_link_url = reverse_lazy("questions:family_history_lung_cancer")
def get(self, request, *args, **kwargs):
if not (
@@ -25,3 +24,8 @@ def get(self, request, *args, **kwargs):
):
return redirect(reverse("questions:family_history_lung_cancer"))
return super().get(request, *args, **kwargs)
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:family_history_lung_cancer")
diff --git a/lung_cancer_screening/questions/views/respiratory_conditions.py b/lung_cancer_screening/questions/views/respiratory_conditions.py
index 6d4c8c68..d9400602 100644
--- a/lung_cancer_screening/questions/views/respiratory_conditions.py
+++ b/lung_cancer_screening/questions/views/respiratory_conditions.py
@@ -1,4 +1,4 @@
-from django.urls import reverse_lazy
+from django.urls import reverse, reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .mixins.ensure_response_set import EnsureResponseSet
@@ -13,5 +13,9 @@ class RespiratoryConditionsView(LoginRequiredMixin, EnsureResponseSet, EnsureEli
form_class = RespiratoryConditionsForm
model = RespiratoryConditionsResponse
success_url = reverse_lazy("questions:asbestos_exposure")
- back_link_url = reverse_lazy("questions:education")
page_title = "Respiratory conditions – Check if you need a lung scan – NHS"
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:education")
diff --git a/lung_cancer_screening/questions/views/sex_at_birth.py b/lung_cancer_screening/questions/views/sex_at_birth.py
index 4ec045f1..890b3491 100644
--- a/lung_cancer_screening/questions/views/sex_at_birth.py
+++ b/lung_cancer_screening/questions/views/sex_at_birth.py
@@ -1,4 +1,4 @@
-from django.urls import reverse_lazy
+from django.urls import reverse, reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .mixins.ensure_response_set import EnsureResponseSet
@@ -13,4 +13,8 @@ class SexAtBirthView(LoginRequiredMixin, EnsureResponseSet, EnsureEligibleMixin,
form_class = SexAtBirthForm
model = SexAtBirthResponse
success_url = reverse_lazy("questions:ethnicity")
- back_link_url = reverse_lazy("questions:gender")
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:gender")
diff --git a/lung_cancer_screening/questions/views/smoked_total_years.py b/lung_cancer_screening/questions/views/smoked_total_years.py
index 87b34e68..6ba056dc 100644
--- a/lung_cancer_screening/questions/views/smoked_total_years.py
+++ b/lung_cancer_screening/questions/views/smoked_total_years.py
@@ -73,7 +73,7 @@ def get_success_url(self):
query=self.get_change_query_params(),
)
- if self.next_unanswered_history() and not self.should_redirect_to_responses(self.request):
+ if self.next_unanswered_history() and not self.is_changing_responses():
return reverse(
"questions:smoking_current",
kwargs={
diff --git a/lung_cancer_screening/questions/views/smoking_change.py b/lung_cancer_screening/questions/views/smoking_change.py
index 6249e97e..006cecb3 100644
--- a/lung_cancer_screening/questions/views/smoking_change.py
+++ b/lung_cancer_screening/questions/views/smoking_change.py
@@ -59,7 +59,7 @@ def form_valid(self, form):
def get_success_url(self):
if self.next_smoking_history():
if self.next_smoking_history().is_normal():
- if self.should_redirect_to_responses(self.request):
+ if self.is_changing_responses():
return reverse("questions:responses")
else:
return reverse(
@@ -82,12 +82,12 @@ def get_success_url(self):
return reverse("questions:responses")
- def should_redirect_to_responses(self, request):
- return bool(request.POST.get("change"))
+ def is_changing_responses(self):
+ return bool(self.request.POST.get("change"))
def get_change_query_params(self):
- if not self.should_redirect_to_responses(self.request):
+ if not self.is_changing_responses():
return {}
return {"change": "True"}
diff --git a/lung_cancer_screening/questions/views/smoking_current.py b/lung_cancer_screening/questions/views/smoking_current.py
index 40dc0699..1a6bb225 100644
--- a/lung_cancer_screening/questions/views/smoking_current.py
+++ b/lung_cancer_screening/questions/views/smoking_current.py
@@ -30,6 +30,9 @@ def get_success_url(self):
def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+
if self.previous_smoking_history():
if self.previous_smoking_history().is_normal():
return reverse(
@@ -47,7 +50,7 @@ def get_back_link_url(self):
query=self.get_change_query_params(),
)
- return reverse("questions:types_tobacco_smoking")
+ return reverse("questions:types_tobacco_smoking", query=self.get_change_query_params())
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
diff --git a/lung_cancer_screening/questions/views/types_tobacco_smoking.py b/lung_cancer_screening/questions/views/types_tobacco_smoking.py
index 2fe7c9ae..f81da304 100644
--- a/lung_cancer_screening/questions/views/types_tobacco_smoking.py
+++ b/lung_cancer_screening/questions/views/types_tobacco_smoking.py
@@ -20,7 +20,7 @@ def get_form_kwargs(self):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
- context["back_link_url"] = reverse("questions:periods_when_you_stopped_smoking")
+ context["back_link_url"] = self.get_back_link_url()
return context
def form_valid(self, form):
@@ -40,3 +40,11 @@ def get_success_url(self):
"tobacco_type": next_tobacco_smoking_history.url_type()
},
)
+
+ def is_changing_responses(self):
+ return self.request.GET.get("change") == "True" or self.request.POST.get("change") == "True"
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:periods_when_you_stopped_smoking")
diff --git a/lung_cancer_screening/questions/views/weight.py b/lung_cancer_screening/questions/views/weight.py
index b24fd5ca..4749b1f0 100644
--- a/lung_cancer_screening/questions/views/weight.py
+++ b/lung_cancer_screening/questions/views/weight.py
@@ -1,4 +1,4 @@
-from django.urls import reverse_lazy
+from django.urls import reverse, reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .mixins.ensure_response_set import EnsureResponseSet
@@ -17,7 +17,6 @@ class WeightView(LoginRequiredMixin, EnsureResponseSet, EnsureEligibleMixin, Que
template_name = "weight.jinja"
model = WeightResponse
success_url = reverse_lazy("questions:gender")
- back_link_url = reverse_lazy("questions:height")
def get_form_class(self):
unit = self.get_unit()
@@ -38,3 +37,8 @@ def get_unit(self):
if response.imperial and unit != "metric":
unit = "imperial"
return unit
+
+ def get_back_link_url(self):
+ if self.is_changing_responses():
+ return reverse("questions:responses")
+ return reverse("questions:height")