|
1 | | -from django.shortcuts import render, redirect |
2 | | -from django.urls import reverse |
3 | | -from datetime import date |
4 | | -from dateutil.relativedelta import relativedelta |
| 1 | +from django.urls import reverse, reverse_lazy |
5 | 2 |
|
6 | 3 | from .question_base_view import QuestionBaseView |
7 | 4 | from ..forms.date_of_birth_form import DateOfBirthForm |
8 | 5 | from ..models.date_of_birth_response import DateOfBirthResponse |
9 | 6 |
|
10 | 7 |
|
11 | 8 | class DateOfBirthView(QuestionBaseView): |
12 | | - def get(self, request): |
13 | | - response, _ = DateOfBirthResponse.objects.get_or_build( |
14 | | - response_set=request.response_set |
15 | | - ) |
16 | | - return render_template( |
17 | | - request, |
18 | | - DateOfBirthForm(instance=response) |
19 | | - ) |
20 | | - |
21 | | - def post(self, request): |
22 | | - response, _ = DateOfBirthResponse.objects.get_or_build( |
23 | | - response_set=request.response_set |
24 | | - ) |
25 | | - form = DateOfBirthForm( |
26 | | - instance=response, |
27 | | - data=request.POST |
28 | | - ) |
29 | | - |
30 | | - if form.is_valid(): |
31 | | - fifty_five_years_ago = date.today() - relativedelta(years=55) |
32 | | - seventy_five_years_ago = date.today() - relativedelta(years=75) |
33 | | - date_of_birth = form.cleaned_data["value"] |
34 | | - |
35 | | - age_in_range = ( |
36 | | - seventy_five_years_ago < date_of_birth <= fifty_five_years_ago |
37 | | - ) |
38 | | - if age_in_range: |
39 | | - response.value = date_of_birth |
40 | | - response.save() |
41 | | - |
42 | | - return self.redirect_to_response_or_next_question( |
43 | | - request, |
44 | | - "questions:check_need_appointment" |
45 | | - ) |
46 | | - else: |
47 | | - return redirect(reverse("questions:age_range_exit")) |
48 | | - |
| 9 | + template_name = "question_form.jinja" |
| 10 | + form_class = DateOfBirthForm |
| 11 | + model = DateOfBirthResponse |
| 12 | + success_url = reverse_lazy("questions:check_need_appointment") |
| 13 | + back_link_url = reverse_lazy("questions:have_you_ever_smoked") |
| 14 | + |
| 15 | + def get_success_url(self): |
| 16 | + if self.object.is_currently_in_age_range(): |
| 17 | + return super().get_success_url() |
49 | 18 | else: |
50 | | - return render_template( |
51 | | - request, |
52 | | - form, |
53 | | - status=422 |
54 | | - ) |
55 | | - |
56 | | - |
57 | | -def render_template(request, form, status=200): |
58 | | - return render( |
59 | | - request, |
60 | | - "question_form.jinja", |
61 | | - { |
62 | | - "form": form, |
63 | | - "back_link_url": reverse("questions:have_you_ever_smoked") |
64 | | - }, |
65 | | - status=status |
66 | | - ) |
| 19 | + return reverse("questions:age_range_exit") |
0 commit comments