Refactor organisation branding into model

This is the same way we handle lazy-loading the branding in the service
model.
This commit is contained in:
Chris Hill-Scott
2019-09-16 11:02:34 +01:00
parent e18e2d1e98
commit 29a0611e42
3 changed files with 24 additions and 19 deletions
-17
View File
@@ -222,25 +222,8 @@ def cancel_invited_org_user(org_id, invited_user_id):
@main.route("/organisations/<org_id>/settings/", methods=['GET']) @main.route("/organisations/<org_id>/settings/", methods=['GET'])
@user_is_platform_admin @user_is_platform_admin
def organisation_settings(org_id): def organisation_settings(org_id):
email_branding = 'GOV.UK'
if current_organisation.email_branding_id:
email_branding = email_branding_client.get_email_branding(
current_organisation.email_branding_id
)['email_branding']['name']
letter_branding = None
if current_organisation.letter_branding_id:
letter_branding = letter_branding_client.get_letter_branding(
current_organisation.letter_branding_id
)['name']
return render_template( return render_template(
'views/organisations/organisation/settings/index.html', 'views/organisations/organisation/settings/index.html',
email_branding=email_branding,
letter_branding=letter_branding,
) )
+22
View File
@@ -2,6 +2,8 @@ from flask import abort
from werkzeug.utils import cached_property from werkzeug.utils import cached_property
from app.models import JSONModel, ModelList from app.models import JSONModel, ModelList
from app.notify_client.email_branding_client import email_branding_client
from app.notify_client.letter_branding_client import letter_branding_client
from app.notify_client.organisations_api_client import organisations_client from app.notify_client.organisations_api_client import organisations_client
@@ -148,6 +150,26 @@ class Organisation(JSONModel):
key=lambda user: user.email_address.lower(), key=lambda user: user.email_address.lower(),
) )
@cached_property
def email_branding(self):
if self.email_branding_id:
return email_branding_client.get_email_branding(
self.email_branding_id
)['email_branding']
@property
def email_branding_name(self):
if self.email_branding_id:
return self.email_branding['name']
return 'GOV.UK'
@cached_property
def letter_branding(self):
if self.letter_branding_id:
return letter_branding_client.get_letter_branding(
self.letter_branding_id
)
def update(self, **kwargs): def update(self, **kwargs):
response = organisations_client.update_organisation(self.id, **kwargs) response = organisations_client.update_organisation(self.id, **kwargs)
self.__init__(response) self.__init__(response)
@@ -73,7 +73,7 @@
{% endcall %} {% endcall %}
{% call row() %} {% call row() %}
{{ text_field('Default email branding') }} {{ text_field('Default email branding') }}
{{ text_field(email_branding) }} {{ text_field(current_org.email_branding_name) }}
{{ edit_field( {{ edit_field(
'Change', 'Change',
url_for('.edit_organisation_email_branding', org_id=current_org.id) url_for('.edit_organisation_email_branding', org_id=current_org.id)
@@ -83,7 +83,7 @@
{% call row() %} {% call row() %}
{{ text_field('Default letter branding') }} {{ text_field('Default letter branding') }}
{{ optional_text_field( {{ optional_text_field(
letter_branding, current_org.letter_branding.name,
default='No branding' default='No branding'
) }} ) }}
{{ edit_field( {{ edit_field(