Merge pull request #2997 from alphagov/org-settings-platform-admin-only

Make organisation settings platform admin only
This commit is contained in:
Chris Hill-Scott
2019-06-04 11:25:56 +01:00
committed by GitHub
11 changed files with 138 additions and 143 deletions

View File

@@ -180,7 +180,7 @@ def cancel_invited_org_user(org_id, invited_user_id):
@main.route("/organisations/<org_id>/settings/", methods=['GET'])
@login_required
@user_has_permissions()
@user_is_platform_admin
def organisation_settings(org_id):
email_branding = 'GOV.UK'
@@ -206,7 +206,7 @@ def organisation_settings(org_id):
@main.route("/organisations/<org_id>/settings/edit-name", methods=['GET', 'POST'])
@login_required
@user_has_permissions()
@user_is_platform_admin
def edit_organisation_name(org_id):
form = RenameOrganisationForm()
@@ -229,7 +229,6 @@ def edit_organisation_name(org_id):
@main.route("/organisations/<org_id>/settings/edit-type", methods=['GET', 'POST'])
@login_required
@user_has_permissions()
@user_is_platform_admin
def edit_organisation_type(org_id):
@@ -252,7 +251,6 @@ def edit_organisation_type(org_id):
@main.route("/organisations/<org_id>/settings/edit-crown-status", methods=['GET', 'POST'])
@login_required
@user_has_permissions()
@user_is_platform_admin
def edit_organisation_crown_status(org_id):
@@ -283,7 +281,6 @@ def edit_organisation_crown_status(org_id):
@main.route("/organisations/<org_id>/settings/edit-agreement", methods=['GET', 'POST'])
@login_required
@user_has_permissions()
@user_is_platform_admin
def edit_organisation_agreement(org_id):
@@ -314,7 +311,6 @@ def edit_organisation_agreement(org_id):
@main.route("/organisations/<org_id>/settings/set-email-branding", methods=['GET', 'POST'])
@login_required
@user_has_permissions()
@user_is_platform_admin
def edit_organisation_email_branding(org_id):
@@ -341,7 +337,6 @@ def edit_organisation_email_branding(org_id):
@main.route("/organisations/<org_id>/settings/preview-email-branding", methods=['GET', 'POST'])
@login_required
@user_has_permissions()
@user_is_platform_admin
def organisation_preview_email_branding(org_id):
@@ -412,7 +407,6 @@ def organisation_preview_letter_branding(org_id):
@main.route("/organisations/<org_id>/settings/edit-organisation-domains", methods=['GET', 'POST'])
@login_required
@user_has_permissions()
@user_is_platform_admin
def edit_organisation_domains(org_id):
@@ -471,7 +465,6 @@ def confirm_edit_organisation_name(org_id):
@main.route("/organisations/<org_id>/settings/edit-go-live-notes", methods=['GET', 'POST'])
@login_required
@user_has_permissions()
@user_is_platform_admin
def edit_organisation_go_live_notes(org_id):

View File

@@ -1,5 +1,6 @@
{% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %}
{% extends "org_template.html" %}
@@ -9,7 +10,10 @@
{% endblock %}
{% block maincolumn_content %}
<h1 class="heading-large">Data sharing and financial agreement</h1>
{{ page_header(
"Data sharing and financial agreement",
back_link=url_for('.organisation_settings', org_id=current_org.id)
) }}
<div class="grid-row">
<div class="column-five-sixths">
{% call form_wrapper() %}

View File

@@ -1,5 +1,6 @@
{% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %}
{% extends "org_template.html" %}
@@ -9,7 +10,10 @@
{% endblock %}
{% block maincolumn_content %}
<h1 class="heading-large">Crown organisation</h1>
{{ page_header(
"Crown organisation",
back_link=url_for('.organisation_settings', org_id=current_org.id)
) }}
<div class="grid-row">
<div class="column-five-sixths">
{% call form_wrapper() %}

View File

@@ -1,5 +1,6 @@
{% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/list-entry.html" import list_entry %}
{% from "components/form.html" import form_wrapper %}
@@ -10,7 +11,10 @@
{% endblock %}
{% block maincolumn_content %}
<h1 class="heading-large">Known email domains</h1>
{{ page_header(
"Known email domains",
back_link=url_for('.organisation_settings', org_id=current_org.id)
) }}
<div class="grid-row">
<div class="column-five-sixths">
<p>

View File

@@ -1,5 +1,6 @@
{% from "components/form.html" import form_wrapper %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/textbox.html" import textbox %}
{% extends "org_template.html" %}
@@ -9,7 +10,10 @@
{% endblock %}
{% block maincolumn_content %}
<h1 class="heading-large">Edit request to go live notes</h1>
{{ page_header(
"Edit request to go live notes",
back_link=url_for('.organisation_settings', org_id=current_org.id)
) }}
<div class="grid-row">
<div class="column-five-sixths">
<p>

View File

@@ -1,21 +1,21 @@
{% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %}
{% extends "org_template.html" %}
{% block org_page_title %}
Organisation type
Organisation sector
{% endblock %}
{% block maincolumn_content %}
<h1 class="heading-large">Organisation type</h1>
<div class="grid-row">
<div class="column-five-sixths">
{% call form_wrapper() %}
{{ radios(form.organisation_type) }}
{{ page_footer('Save') }}
{% endcall %}
</div>
</div>
{{ page_header(
"Organisation sector",
back_link=url_for('.organisation_settings', org_id=current_org.id)
) }}
{% call form_wrapper() %}
{{ radios(form.organisation_type) }}
{{ page_footer('Save') }}
{% endcall %}
{% endblock %}

View File

@@ -15,7 +15,7 @@
caption_visible=False
) %}
{% call row() %}
{{ text_field('Organisation name') }}
{{ text_field('Name') }}
{{ text_field(current_org.name) }}
{{ edit_field(
'Change',
@@ -23,102 +23,88 @@
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Sector') }}
{{ optional_text_field({
'central': 'Central government',
'local': 'Local government',
'nhs': 'NHS',
}.get(current_org.organisation_type)) }}
{{ edit_field(
'Change',
url_for('.edit_organisation_type', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Crown organisation') }}
{{ optional_text_field(
{
True: 'Yes',
False: 'No',
}.get(current_org.crown),
default='Not sure'
) }}
{{ edit_field(
'Change',
url_for('.edit_organisation_crown_status', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Data sharing and financial agreement') }}
{{ text_field(
{
True: 'Signed',
False: 'Not signed',
None: 'Not signed (but we have some service-specific agreements in place)'
}.get(current_org.agreement_signed)
) }}
{{ edit_field(
'Change',
url_for('.edit_organisation_agreement', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Request to go live notes') }}
{{ optional_text_field(current_org.request_to_go_live_notes, default='None') }}
{{ edit_field(
'Change',
url_for('.edit_organisation_go_live_notes', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Default email branding') }}
{{ text_field(email_branding) }}
{{ edit_field(
'Change',
url_for('.edit_organisation_email_branding', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Default letter branding') }}
{{ optional_text_field(
letter_branding,
default='No branding'
) }}
{{ edit_field(
'Change',
url_for('.edit_organisation_letter_branding', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Known email domains') }}
{{ optional_text_field(current_org.domains or None, default='None') }}
{{ edit_field(
'Change',
url_for('.edit_organisation_domains', org_id=current_org.id)
)
}}
{% endcall %}
{% endcall %}
</div>
{% if current_user.platform_admin %}
<h2 class="heading-medium">Platform admin settings</h2>
<div class="settings-table body-copy-table">
{% call mapping_table(
caption='Platform admin settings',
field_headings=['Label', 'Value', 'Action'],
field_headings_visible=False,
caption_visible=False
) %}
{% call row() %}
{{ text_field('Organisation type') }}
{{ optional_text_field({
'central': 'Central government',
'local': 'Local government',
'nhs': 'NHS',
}.get(current_org.organisation_type)) }}
{{ edit_field(
'Change',
url_for('.edit_organisation_type', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Crown organisation') }}
{{ optional_text_field(
{
True: 'Yes',
False: 'No',
}.get(current_org.crown),
default='Not sure'
) }}
{{ edit_field(
'Change',
url_for('.edit_organisation_crown_status', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Data sharing and financial agreement') }}
{{ text_field(
{
True: 'Signed',
False: 'Not signed',
None: 'Not signed (but we have some service-specific agreements in place)'
}.get(current_org.agreement_signed)
) }}
{{ edit_field(
'Change',
url_for('.edit_organisation_agreement', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Request to go live notes') }}
{{ optional_text_field(current_org.request_to_go_live_notes, default='None') }}
{{ edit_field(
'Change',
url_for('.edit_organisation_go_live_notes', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Default email branding') }}
{{ text_field(email_branding) }}
{{ edit_field(
'Change',
url_for('.edit_organisation_email_branding', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Default letter branding') }}
{{ optional_text_field(
letter_branding,
default='No branding'
) }}
{{ edit_field(
'Change',
url_for('.edit_organisation_letter_branding', org_id=current_org.id)
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Known email domains') }}
{{ optional_text_field(current_org.domains or None, default='None') }}
{{ edit_field(
'Change',
url_for('.edit_organisation_domains', org_id=current_org.id)
)
}}
{% endcall %}
{% endcall %}
</div>
{% endif %}
{% endblock %}

View File

@@ -1,6 +1,7 @@
{% extends "org_template.html" %}
{% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/live-search.html" import live_search %}
{% from "components/form.html" import form_wrapper %}
@@ -10,7 +11,10 @@
{% block maincolumn_content %}
<h1 class="heading-large">Default email branding</h1>
{{ page_header(
"Default email branding",
back_link=url_for('.organisation_settings', org_id=current_org.id)
) }}
{% call form_wrapper(data_kwargs={'preview-type': 'email'}) %}
<div class="grid-row">
<div class="column-full preview-pane">

View File

@@ -2,6 +2,7 @@
{% from "components/radios.html" import radios %}
{% from "components/live-search.html" import live_search %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %}
{% block org_page_title %}
@@ -10,7 +11,10 @@
{% block maincolumn_content %}
<h1 class="heading-large">Default letter branding</h1>
{{ page_header(
"Default letter branding",
back_link=url_for('.organisation_settings', org_id=current_org.id)
) }}
{% call form_wrapper(data_kwargs={'preview-type': 'letter'}) %}
<div class="grid-row">
<div class="column-full preview-pane">

View File

@@ -2,6 +2,7 @@
{% from "components/textbox.html" import textbox %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %}
{% block service_page_title %}
@@ -10,9 +11,10 @@
{% block maincolumn_content %}
<h1 class="heading-large">
Invite a team member
</h1>
{{ page_header(
"Invite a team member",
back_link=url_for('.manage_org_users', org_id=current_org.id)
) }}
<div class="grid-row">
{% call form_wrapper(class="column-three-quarters") %}
{{ textbox(form.email_address, width='1-1', safe_error_message=True) }}

View File

@@ -161,24 +161,16 @@ def test_organisation_trial_mode_services_doesnt_work_if_not_platform_admin(
)
def test_organisation_settings(
def test_organisation_settings_platform_admin_only(
client_request,
mock_get_organisation,
organisation_one
):
expected_rows = [
'Label Value Action',
'Organisation name Org 1 Change',
]
page = client_request.get('.organisation_settings', org_id=organisation_one['id'])
assert page.find('h1').text == 'Settings'
rows = page.select('tr')
assert len(rows) == len(expected_rows)
for index, row in enumerate(expected_rows):
assert row == " ".join(rows[index].text.split())
mock_get_organisation.assert_called_with(organisation_one['id'])
client_request.get(
'.organisation_settings',
org_id=organisation_one['id'],
_expected_status=403,
)
def test_organisation_settings_for_platform_admin(
@@ -189,10 +181,8 @@ def test_organisation_settings_for_platform_admin(
):
expected_rows = [
'Label Value Action',
'Organisation name Org 1 Change',
'Label Value Action',
'Organisation type Not set Change',
'Name Org 1 Change',
'Sector Not set Change',
'Crown organisation Yes Change',
'Data sharing and financial agreement Not signed Change',
'Request to go live notes None Change',