Skip to content

Commit

Permalink
DST-608: split out address forms only (#44)
Browse files Browse the repository at this point in the history
* Splitting out forms

* Updating yourself address and address tests

---------

Co-authored-by: Morgan Rees <[email protected]>
  • Loading branch information
morganmaerees and Morgan Rees authored Aug 28, 2024
1 parent c4bd988 commit 4e45d8e
Show file tree
Hide file tree
Showing 13 changed files with 402 additions and 198 deletions.
95 changes: 64 additions & 31 deletions django_app/apply_for_a_licence/forms/forms_business.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@
CompaniesHouseException,
)
from apply_for_a_licence.models import Licence, Organisation
from core.forms.base_forms import BaseBusinessDetailsForm, BaseForm, BaseModelForm
from core.forms.base_forms import (
BaseForm,
BaseModelForm,
BaseNonUKBusinessDetailsForm,
BaseUKBusinessDetailsForm,
)
from core.utils import is_request_ratelimited
from crispy_forms_gds.choices import Choice
from crispy_forms_gds.layout import (
Expand Down Expand Up @@ -176,53 +181,81 @@ class WhereIsTheBusinessLocatedForm(BaseForm):
)


class AddABusinessForm(BaseBusinessDetailsForm):
class AddAUKBusinessForm(BaseUKBusinessDetailsForm):
form_h1_header = "Add a business"

class Meta(BaseBusinessDetailsForm.Meta):
class Meta(BaseUKBusinessDetailsForm.Meta):
model = Organisation
fields = (
"name",
"town_or_city",
"country",
"address_line_1",
"address_line_2",
"address_line_3",
"address_line_4",
"county",
"postcode",
"country",
)
widgets = BaseBusinessDetailsForm.Meta.widgets
labels = BaseBusinessDetailsForm.Meta.labels
error_messages = BaseBusinessDetailsForm.Meta.error_messages
widgets = BaseUKBusinessDetailsForm.Meta.widgets
labels = BaseUKBusinessDetailsForm.Meta.labels
error_messages = BaseUKBusinessDetailsForm.Meta.error_messages

def __init__(self, *args: object, **kwargs: object) -> None:
super().__init__(*args, **kwargs)

if self.is_uk_address:
address_layout = Fieldset(
Field.text("country", field_width=Fluid.ONE_THIRD),
Field.text("address_line_1", field_width=Fluid.ONE_THIRD),
Field.text("address_line_2", field_width=Fluid.ONE_THIRD),
Field.text("town_or_city", field_width=Fluid.ONE_THIRD),
Field.text("county", field_width=Fluid.ONE_THIRD),
Field.text("postcode", field_width=Fluid.ONE_THIRD),
legend="Address",
legend_size=Size.MEDIUM,
legend_tag="h2",
)
else:
address_layout = Fieldset(
Field.text("town_or_city", field_width=Fluid.ONE_THIRD),
Field.text("country", field_width=Fluid.ONE_THIRD),
Field.text("address_line_1", field_width=Fluid.ONE_THIRD),
Field.text("address_line_2", field_width=Fluid.ONE_THIRD),
Field.text("address_line_3", field_width=Fluid.ONE_THIRD),
Field.text("address_line_4", field_width=Fluid.ONE_THIRD),
legend="Address",
address_layout = Fieldset(
Field.text("address_line_1", field_width=Fluid.ONE_THIRD),
Field.text("address_line_2", field_width=Fluid.ONE_THIRD),
Field.text("town_or_city", field_width=Fluid.ONE_THIRD),
Field.text("county", field_width=Fluid.ONE_THIRD),
Field.text("postcode", field_width=Fluid.ONE_THIRD),
legend="Address",
legend_size=Size.MEDIUM,
legend_tag="h2",
)

self.helper.layout = Layout(
Fieldset(
Field.text("name", field_width=Fluid.ONE_HALF),
legend="Name",
legend_size=Size.MEDIUM,
legend_tag="h2",
)
),
address_layout,
)


class AddANonUKBusinessForm(BaseNonUKBusinessDetailsForm):
form_h1_header = "Add a business"

class Meta(BaseNonUKBusinessDetailsForm.Meta):
model = Organisation
fields = (
"name",
"town_or_city",
"country",
"address_line_1",
"address_line_2",
"address_line_3",
"address_line_4",
)
widgets = BaseNonUKBusinessDetailsForm.Meta.widgets
labels = BaseNonUKBusinessDetailsForm.Meta.labels
error_messages = BaseNonUKBusinessDetailsForm.Meta.error_messages

def __init__(self, *args: object, **kwargs: object) -> None:
super().__init__(*args, **kwargs)

address_layout = Fieldset(
Field.text("town_or_city", field_width=Fluid.ONE_THIRD),
Field.text("country", field_width=Fluid.ONE_THIRD),
Field.text("address_line_1", field_width=Fluid.ONE_THIRD),
Field.text("address_line_2", field_width=Fluid.ONE_THIRD),
Field.text("address_line_3", field_width=Fluid.ONE_THIRD),
Field.text("address_line_4", field_width=Fluid.ONE_THIRD),
legend="Address",
legend_size=Size.MEDIUM,
legend_tag="h2",
)

self.helper.layout = Layout(
Fieldset(
Expand Down
74 changes: 51 additions & 23 deletions django_app/apply_for_a_licence/forms/forms_individual.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
from apply_for_a_licence.models import Individual, Organisation
from core.forms.base_forms import BaseBusinessDetailsForm, BaseForm, BaseModelForm
from core.forms.base_forms import (
BaseBusinessDetailsForm,
BaseForm,
BaseModelForm,
BaseNonUKBusinessDetailsForm,
BaseUKBusinessDetailsForm,
)
from crispy_forms_gds.choices import Choice
from crispy_forms_gds.layout import Field, Fieldset, Fluid, Layout, Size
from django import forms
Expand Down Expand Up @@ -116,42 +122,64 @@ def __init__(self, *args: object, **kwargs: object) -> None:
)


class IndividualAddressForm(BaseBusinessDetailsForm):
class IndividualUKAddressForm(BaseUKBusinessDetailsForm):
form_h1_header = "What is the individual's address?"

class Meta:
class Meta(BaseUKBusinessDetailsForm.Meta):
model = Individual
fields = (
"town_or_city",
"country",
"address_line_1",
"address_line_2",
"address_line_3",
"address_line_4",
"county",
"postcode",
)
widgets = {"country": forms.Select}
widgets = BaseUKBusinessDetailsForm.Meta.widgets
labels = BaseUKBusinessDetailsForm.Meta.labels
error_messages = BaseUKBusinessDetailsForm.Meta.error_messages

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

self.helper.layout = Layout(
Field.text("address_line_1", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_2", field_width=Fluid.TWO_THIRDS),
Field.text("town_or_city", field_width=Fluid.ONE_HALF),
Field.text("county", field_width=Fluid.ONE_HALF),
Field.text("postcode", field_width=Fluid.ONE_THIRD),
)

self.helper.label_size = None


class IndividualNonUKAddressForm(BaseNonUKBusinessDetailsForm):
form_h1_header = "What is the individual's address?"

class Meta(BaseNonUKBusinessDetailsForm.Meta):
model = Individual
fields = (
"town_or_city",
"country",
"address_line_1",
"address_line_2",
"address_line_3",
"address_line_4",
)
widgets = BaseUKBusinessDetailsForm.Meta.widgets
labels = BaseUKBusinessDetailsForm.Meta.labels
error_messages = BaseUKBusinessDetailsForm.Meta.error_messages

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

if self.is_uk_address:
self.helper.layout = Layout(
Field.text("address_line_1", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_2", field_width=Fluid.TWO_THIRDS),
Field.text("town_or_city", field_width=Fluid.ONE_HALF),
Field.text("county", field_width=Fluid.ONE_HALF),
Field.text("postcode", field_width=Fluid.ONE_THIRD),
)
else:
self.helper.layout = Layout(
Field.text("country", field_width=Fluid.TWO_THIRDS),
Field.text("town_or_city", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_1", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_2", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_3", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_4", field_width=Fluid.TWO_THIRDS),
)
self.helper.layout = Layout(
Field.text("country", field_width=Fluid.TWO_THIRDS),
Field.text("town_or_city", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_1", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_2", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_3", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_4", field_width=Fluid.TWO_THIRDS),
)

self.helper.label_size = None
118 changes: 84 additions & 34 deletions django_app/apply_for_a_licence/forms/forms_recipients.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
from apply_for_a_licence.models import Organisation
from core.forms.base_forms import BaseBusinessDetailsForm, BaseForm
from core.forms.base_forms import (
BaseBusinessDetailsForm,
BaseForm,
BaseNonUKBusinessDetailsForm,
BaseUKBusinessDetailsForm,
)
from crispy_forms_gds.choices import Choice
from crispy_forms_gds.layout import Field, Fieldset, Fluid, Layout, Size
from django import forms
Expand All @@ -17,7 +22,7 @@ class WhereIsTheRecipientLocatedForm(BaseForm):
)


class AddARecipientForm(BaseBusinessDetailsForm):
class AddAUKRecipientForm(BaseUKBusinessDetailsForm):
form_h1_header = "About the recipient"
labels = {
"name": "Name of recipient",
Expand All @@ -34,18 +39,17 @@ class AddARecipientForm(BaseBusinessDetailsForm):
"name": "This could be a business, an individual or a ship",
}

class Meta(BaseBusinessDetailsForm.Meta):
class Meta(BaseUKBusinessDetailsForm.Meta):
model = Organisation
fields = (
"name",
"name_of_person",
"website",
"email",
"town_or_city",
"country",
"address_line_1",
"address_line_2",
"address_line_3",
"address_line_4",
"county",
"postcode",
)
Expand All @@ -56,37 +60,83 @@ class Meta(BaseBusinessDetailsForm.Meta):
def __init__(self, *args: object, **kwargs: object) -> None:
super().__init__(*args, **kwargs)

self.fields["town_or_city"].required = True
self.fields["address_line_1"].required = True

if self.is_uk_address:
address_layout = Fieldset(
Field.text("country", field_width=Fluid.ONE_HALF),
Field.text("address_line_1", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_2", field_width=Fluid.TWO_THIRDS),
Field.text("town_or_city", field_width=Fluid.ONE_HALF),
Field.text("county", field_width=Fluid.ONE_HALF),
Field.text("postcode", field_width=Fluid.ONE_THIRD),
legend="Address",
legend_size=Size.MEDIUM,
legend_tag="h2",
)

else:
address_layout = Fieldset(
Field.text("country", field_width=Fluid.TWO_THIRDS),
Field.text("town_or_city", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_1", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_2", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_3", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_4", field_width=Fluid.TWO_THIRDS),
legend="Address",
address_layout = Fieldset(
Field.text("address_line_1", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_2", field_width=Fluid.TWO_THIRDS),
Field.text("town_or_city", field_width=Fluid.ONE_HALF),
Field.text("county", field_width=Fluid.ONE_HALF),
Field.text("postcode", field_width=Fluid.ONE_THIRD),
legend="Address",
legend_size=Size.MEDIUM,
legend_tag="h2",
)

self.helper.layout = Layout(
Fieldset(
Field.text("name_of_person", field_width=Fluid.TWO_THIRDS),
Field.text("name", field_width=Fluid.TWO_THIRDS),
Field.text("email", field_width=Fluid.TWO_THIRDS),
Field.text("website", field_width=Fluid.TWO_THIRDS),
legend="Name",
legend_size=Size.MEDIUM,
legend_tag="h2",
)
self.fields["additional_contact_details"].help_text = (
"This could be a phone number, or details of a jurisdiction instead of a country"
)
),
address_layout,
Field.textarea("additional_contact_details", field_width=Fluid.FULL, rows=5, label_tag="h2", label_size=Size.MEDIUM),
)


class AddANonUKRecipientForm(BaseNonUKBusinessDetailsForm):
form_h1_header = "About the recipient"
labels = {
"name_of_person": "Name of person (optional)",
"email": "Email address (optional)",
"website": "Website address (optional)",
"additional_contact_details": "Additional contact details (optional)",
}
additional_contact_details = forms.CharField(
widget=forms.Textarea,
label="Additional contact details",
required=False,
)
help_texts = {
"name": "If the recipient is a ship, enter the ship's name",
}

class Meta(BaseNonUKBusinessDetailsForm.Meta):
model = Organisation
fields = (
"name",
"website",
"email",
"town_or_city",
"country",
"address_line_1",
"address_line_2",
"address_line_3",
"address_line_4",
)
widgets = BaseBusinessDetailsForm.Meta.widgets
labels = BaseBusinessDetailsForm.Meta.labels
error_messages = BaseBusinessDetailsForm.Meta.error_messages

def __init__(self, *args: object, **kwargs: object) -> None:
super().__init__(*args, **kwargs)

address_layout = Fieldset(
Field.text("country", field_width=Fluid.TWO_THIRDS),
Field.text("town_or_city", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_1", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_2", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_3", field_width=Fluid.TWO_THIRDS),
Field.text("address_line_4", field_width=Fluid.TWO_THIRDS),
legend="Address",
legend_size=Size.MEDIUM,
legend_tag="h2",
)
self.fields["additional_contact_details"].help_text = (
"This could be a phone number, or details of a jurisdiction instead of a country"
)

self.helper.layout = Layout(
Fieldset(
Expand Down
Loading

0 comments on commit 4e45d8e

Please sign in to comment.