diff --git a/app/main/views/organisations.py b/app/main/views/organisations.py index 0fdd0b832..5a705969e 100644 --- a/app/main/views/organisations.py +++ b/app/main/views/organisations.py @@ -31,7 +31,7 @@ from app.main.forms import ( SetLetterBranding, ) from app.main.views.service_settings import get_branding_as_value_and_label -from app.models.organisation import Organisations +from app.models.organisation import Organisation, Organisations from app.models.user import InvitedOrgUser, User from app.utils import user_has_permissions, user_is_platform_admin @@ -54,17 +54,7 @@ def add_organisation(): form = NewOrganisationForm() if form.validate_on_submit(): - organisations_client.create_organisation( - name=form.name.data, - crown={ - 'crown': True, - 'non-crown': False, - 'unknown': None, - }.get(form.crown_status.data), - organisation_type=form.organisation_type.data, - agreement_signed=False, - ) - + Organisation.create_from_form(form) return redirect(url_for('.organisations')) return render_template( diff --git a/app/models/organisation.py b/app/models/organisation.py index d8aa19822..e3d971c63 100644 --- a/app/models/organisation.py +++ b/app/models/organisation.py @@ -38,6 +38,27 @@ class Organisation(JSONModel): def from_service(cls, service_id): return cls(organisations_client.get_service_organisation(service_id)) + @classmethod + def create_from_form(cls, form): + return cls.create( + name=form.name.data, + crown={ + 'crown': True, + 'non-crown': False, + 'unknown': None, + }.get(form.crown_status.data), + organisation_type=form.organisation_type.data, + ) + + @classmethod + def create(cls, name, crown, organisation_type, agreement_signed=False): + return cls(organisations_client.create_organisation( + name=name, + crown=crown, + organisation_type=organisation_type, + agreement_signed=agreement_signed, + )) + def __init__(self, _dict): super().__init__(_dict) diff --git a/app/notify_client/organisations_api_client.py b/app/notify_client/organisations_api_client.py index c51982cdd..a31625784 100644 --- a/app/notify_client/organisations_api_client.py +++ b/app/notify_client/organisations_api_client.py @@ -32,11 +32,16 @@ class OrganisationsClient(NotifyAdminAPIClient): raise error @cache.delete('organisations') - def create_organisation(self, name): - data = { - "name": name - } - return self.post(url="/organisations", data=data) + def create_organisation(self, name, crown, organisation_type, agreement_signed): + return self.post( + url="/organisations", + data={ + "name": name, + "crown": crown, + "organisation_type": organisation_type, + "agreement_signed": agreement_signed, + } + ) @cache.delete('domains') @cache.delete('organisations')