Skip to content

Commit

Permalink
DST-610: Bugfix myself and individual added (#58)
Browse files Browse the repository at this point in the history
  • Loading branch information
jenriordan authored Sep 10, 2024
1 parent 1a32edd commit 4930193
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 102 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ <h3 class="govuk-heading-s"> Your Details</h3>
</dd>
<dd class="govuk-summary-list__actions">
<a class="govuk-link"
href="{% url 'add_yourself_address' location=add_yourself_address individual_uuid=add_yourself_id %}&redirect_to_url=check_your_answers">Change<span
href="{% url 'add_yourself_address' location=add_yourself_address %}&redirect_to_url=check_your_answers">Change<span
class="govuk-visually-hidden">your address</span></a>
</dd>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@
{% load crispy_forms_tags crispy_forms_gds %}


{% block title %}You've added yourself {% if request.session.individuals.keys|length > 1 %} plus {{ request.session.individuals.keys|length|add:"-1" }} individual{% if request.session.individuals.keys|length > 1 %}s{% endif %}{% endif %} to the licence{% endblock title %}

{% block title %}You've added yourself {% if request.session.individuals.keys|length > 0 %} plus {{ request.session.individuals.keys|length }} individual{% if request.session.individuals.keys|length > 1 %}s{% endif %}{% endif %} to the licence{% endblock title %}
{% block column_content %}
<h1 class="govuk-heading-l">
You've added yourself {% if request.session.individuals.keys|length > 1 %} plus {{ request.session.individuals.keys|length|add:"-1" }} individual{% if request.session.individuals.keys|length > 1 %}s{% endif %}{% endif %} to the licence
</h1>
You've added yourself {% if request.session.individuals.keys|length > 0 %} plus {{ request.session.individuals.keys|length }} individual{% if request.session.individuals.keys|length > 1 %}s{% endif %}{% endif %} to the licence </h1>
<div class="action-wrapper">
<div>
<h3 class="govuk-heading-m" style="float:left;">Your Details </h3>
Expand Down Expand Up @@ -48,48 +46,46 @@ <h3 class="govuk-heading-m" style="float:left;">Your Details </h3>
</div>
</dl>
{% for id, individual in request.session.individuals.items %}
{% if id != request.session.add_yourself_id %}
<div class="action-wrapper">
<div>
<h3 class="govuk-heading-m" style="float:left;">Individual {{ forloop.counter|add:"-1" }} </h3>
<ul class="govuk-summary-card__actions">
<dd class="govuk-summary-list__action govuk-!-font-weight-regular">
<div class="action-wrapper">
<div>
<h3 class="govuk-heading-m" style="float:left;">Individual {{ forloop.counter }} </h3>
<ul class="govuk-summary-card__actions">
<dd class="govuk-summary-list__action govuk-!-font-weight-regular">

<a class="govuk-link" style="font-size: 19px; text-align:right"
href="{% url 'add_an_individual' %}?individual_uuid={{ id }}">Change<span
class="govuk-visually-hidden"> Individual {{ forloop.counter|add:"-1" }} details </span></a>
</dd>
</ul>
</div>
</div>
<dl class="govuk-summary-list">
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
Name
</dt>
<dd class="govuk-summary-list__value">
{{ individual.name_data.cleaned_data.first_name }} {{individual.name_data..cleaned_data.last_name}}
</dd>
</div>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
Nationality and Location
</dt>
<dd class="govuk-summary-list__value">
{{ individual.name_data.cleaned_data.nationality }}
<a class="govuk-link" style="font-size: 19px; text-align:right"
href="{% url 'add_an_individual' %}?individual_uuid={{ id }}">Change<span
class="govuk-visually-hidden"> Individual {{ forloop.counter }} details </span></a>
</dd>
</div>
<form id="delete_individual_from_yourself_form_{{ forloop.counter|add:"-1" }}" method="post" enctype='multipart/form-data' novalidate
action="{% url 'delete_individual_from_yourself' %}?individual_uuid={{ id }}">
<input type="hidden" name="individual_uuid" value="{{ id }}">
{% csrf_token %}
<button type="submit" class="govuk-body button-that-looks-like-link" form="delete_individual_from_yourself_form_{{ forloop.counter|add:"-1" }}">
Remove Individual {{ forloop.counter|add:"-1" }}<span
class="govuk-visually-hidden"> Individual {{ forloop.counter|add:"-1" }}</span>
</button>
</form>
</dl>
{% endif %}
</ul>
</div>
</div>
<dl class="govuk-summary-list">
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
Name
</dt>
<dd class="govuk-summary-list__value">
{{ individual.name_data.cleaned_data.first_name }} {{individual.name_data.cleaned_data.last_name}}
</dd>
</div>
<div class="govuk-summary-list__row">
<dt class="govuk-summary-list__key">
Nationality and Location
</dt>
<dd class="govuk-summary-list__value">
{{ individual.name_data.cleaned_data.nationality }}
</dd>
</div>
<form id="delete_individual_from_yourself_form_{{ forloop.counter }}" method="post" enctype='multipart/form-data' novalidate
action="{% url 'delete_individual_from_yourself' %}?individual_uuid={{ id }}">
<input type="hidden" name="individual_uuid" value="{{ id }}">
{% csrf_token %}
<button type="submit" class="govuk-body button-that-looks-like-link" form="delete_individual_from_yourself_form_{{ forloop.counter }}">
Remove Individual {{ forloop.counter }}<span
class="govuk-visually-hidden"> Individual {{ forloop.counter }}</span>
</button>
</form>
</dl>
{% endfor %}
{% error_summary form %}
<form method="post" enctype='multipart/form-data' novalidate>
Expand Down
2 changes: 1 addition & 1 deletion django_app/apply_for_a_licence/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
views_yourself_urls = [
path("add_yourself", views_yourself.AddYourselfView.as_view(), name="add_yourself"),
path(
"add_yourself_address/<str:location>/<str:individual_uuid>",
"add_yourself_address/<str:location>",
views_yourself.AddYourselfAddressView.as_view(),
name="add_yourself_address",
),
Expand Down
22 changes: 10 additions & 12 deletions django_app/apply_for_a_licence/views/views_end.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,8 @@ def get_context_data(self, **kwargs: object) -> dict[str, Any]:
if session_files := get_all_session_files(TemporaryDocumentStorage(), self.request.session):
context["session_files"] = session_files

if add_yourself_address_id := self.request.session.get("add_yourself_id", None):
context["add_yourself_id"] = add_yourself_address_id
context["add_yourself_address"] = (
"in_the_uk" if self.request.session["add_yourself_address"]["country"] == "GB" else "outside_the_uk"
)
if user_location := self.request.session.get("add_yourself_address", {}).get("country", ""):
context["add_yourself_address"] = "in_the_uk" if user_location == "GB" else "outside_the_uk"

if businesses := self.request.session.get("businesses", None):
context["businesses"] = businesses
Expand All @@ -63,18 +60,18 @@ class DeclarationView(BaseFormView):

def form_valid(self, form: DeclarationForm) -> HttpResponse:
cleaned_data = get_all_cleaned_data(self.request)
is_myself = False
is_individual = False
is_on_companies_house = False
is_third_party = False
business_employing_individual = False

if cleaned_data["start"]["who_do_you_want_the_licence_to_cover"] in ["myself", "individual"]:
if cleaned_data["start"]["who_do_you_want_the_licence_to_cover"] == "myself":
is_myself = True
cleaned_data["add_yourself_address"] = self.request.session["add_yourself_address"]
elif cleaned_data["start"]["who_do_you_want_the_licence_to_cover"] == "individual":
is_individual = True
if cleaned_data["start"]["who_do_you_want_the_licence_to_cover"] == "individual":
business_employing_individual = True
# TODO: temporary fix
if cleaned_data["start"]["who_do_you_want_the_licence_to_cover"] == "myself":
cleaned_data["add_yourself_address"] = self.request.session["add_yourself_address"]
business_employing_individual = True

if (
cleaned_data["is_the_business_registered_with_companies_house"].get("business_registered_on_companies_house", "")
Expand All @@ -98,10 +95,11 @@ def form_valid(self, form: DeclarationForm) -> HttpResponse:

new_licence_object = save_object.save_licence()

if is_individual:
if is_myself or is_individual:
save_object.save_individuals()
if business_employing_individual:
save_object.save_business()

else:
save_object.save_business()

Expand Down
42 changes: 2 additions & 40 deletions django_app/apply_for_a_licence/views/views_yourself.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import logging
import urllib.parse
import uuid

from apply_for_a_licence.choices import NationalityAndLocation
from apply_for_a_licence.forms import forms_individual as individual_forms
Expand All @@ -24,18 +23,6 @@ def form_valid(self, form: forms.AddYourselfForm) -> HttpResponse:
}
self.request.session["name_data"] = your_details

current_individuals = self.request.session.get("individuals", {})
# get the individual_uuid if it exists, otherwise create it
if individual_uuid := self.request.GET.get("individual_uuid", str(uuid.uuid4())):
# used to display the individual_uuid data in individual_added.html
if individual_uuid not in current_individuals:
current_individuals[individual_uuid] = {}

current_individuals[individual_uuid]["name_data"] = your_details
self.individual_uuid = individual_uuid

self.request.session["individuals"] = current_individuals

self.is_uk_individual = form.cleaned_data["nationality_and_location"] in [
NationalityAndLocation.uk_national_uk_location.value,
NationalityAndLocation.dual_national_uk_location.value,
Expand All @@ -49,7 +36,6 @@ def get_success_url(self):
"add_yourself_address",
kwargs={
"location": "in_the_uk" if self.is_uk_individual else "outside_the_uk",
"individual_uuid": self.individual_uuid,
},
)
if get_parameters := urllib.parse.urlencode(self.request.GET):
Expand All @@ -72,39 +58,15 @@ def get_form_class(self) -> [forms.AddYourselfUKAddressForm | forms.AddYourselfN
form_class = forms.AddYourselfUKAddressForm
return form_class

def get_form_kwargs(self):
kwargs = super().get_form_kwargs()

# restore the form data from the individual_uuid, if it exists
if self.request.method == "GET":
if individual_uuid := self.request.GET.get("individual_uuid", None):
if individuals_dict := self.request.session.get("individuals", {}).get(individual_uuid, None):
kwargs["data"] = individuals_dict["name_data"]["dirty_data"]

return kwargs

def form_valid(self, form: forms.AddYourselfUKAddressForm | forms.AddYourselfNonUKAddressForm) -> HttpResponse:
your_address = {
"cleaned_data": form.cleaned_data,
"dirty_data": form.data,
}
self.request.session["your_address"] = your_address

current_individuals = self.request.session.get("individuals", {})
# get the individual_uuid if it exists, otherwise create it
if individual_uuid := self.kwargs.get("individual_uuid", str(uuid.uuid4())):
# used to display the individual_uuid data in individual_added.html
if individual_uuid not in current_individuals:
current_individuals[individual_uuid] = {}

self.request.session["add_yourself_id"] = individual_uuid
self.request.session["add_yourself_address"] = your_address
current_individuals[individual_uuid]["address_data"] = your_address
self.individual_uuid = individual_uuid

# is it a UK address?
self.is_uk_individual = form.cleaned_data["url_location"] == "in_the_uk"
self.request.session["individuals"] = current_individuals
# is it a UK address?
self.is_uk_individual = form.cleaned_data["url_location"] == "in_the_uk"

return super().form_valid(form)

Expand Down
2 changes: 1 addition & 1 deletion django_app/sanctions_regimes
2 changes: 1 addition & 1 deletion django_app/utils/save_to_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def save_licence(self) -> Licence:
return licence

def save_individuals(self) -> None:
for _, individual in self.request.session["individuals"].items():
for _, individual in self.request.session.get("individuals", {}).items():
Individual.objects.create(
licence=self.licence_object,
first_name=individual["name_data"]["cleaned_data"]["first_name"],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ def test_successful_post(self, al_client):
"add_yourself_address",
kwargs={
"location": "in_the_uk",
"individual_uuid": response.resolver_match.kwargs["individual_uuid"],
},
)
in response.redirect_chain[0][0]
Expand All @@ -62,7 +61,6 @@ def test_successful_non_uk_address_post(self, al_client):
"add_yourself_address",
kwargs={
"location": "outside_the_uk",
"individual_uuid": "individual1",
},
),
data={
Expand Down

0 comments on commit 4930193

Please sign in to comment.