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']) @main.route("/organisations/<org_id>/settings/", methods=['GET'])
@login_required @login_required
@user_has_permissions() @user_is_platform_admin
def organisation_settings(org_id): def organisation_settings(org_id):
email_branding = 'GOV.UK' email_branding = 'GOV.UK'
@@ -206,7 +206,7 @@ def organisation_settings(org_id):
@main.route("/organisations/<org_id>/settings/edit-name", methods=['GET', 'POST']) @main.route("/organisations/<org_id>/settings/edit-name", methods=['GET', 'POST'])
@login_required @login_required
@user_has_permissions() @user_is_platform_admin
def edit_organisation_name(org_id): def edit_organisation_name(org_id):
form = RenameOrganisationForm() form = RenameOrganisationForm()
@@ -229,7 +229,6 @@ def edit_organisation_name(org_id):
@main.route("/organisations/<org_id>/settings/edit-type", methods=['GET', 'POST']) @main.route("/organisations/<org_id>/settings/edit-type", methods=['GET', 'POST'])
@login_required @login_required
@user_has_permissions()
@user_is_platform_admin @user_is_platform_admin
def edit_organisation_type(org_id): 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']) @main.route("/organisations/<org_id>/settings/edit-crown-status", methods=['GET', 'POST'])
@login_required @login_required
@user_has_permissions()
@user_is_platform_admin @user_is_platform_admin
def edit_organisation_crown_status(org_id): 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']) @main.route("/organisations/<org_id>/settings/edit-agreement", methods=['GET', 'POST'])
@login_required @login_required
@user_has_permissions()
@user_is_platform_admin @user_is_platform_admin
def edit_organisation_agreement(org_id): 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']) @main.route("/organisations/<org_id>/settings/set-email-branding", methods=['GET', 'POST'])
@login_required @login_required
@user_has_permissions()
@user_is_platform_admin @user_is_platform_admin
def edit_organisation_email_branding(org_id): 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']) @main.route("/organisations/<org_id>/settings/preview-email-branding", methods=['GET', 'POST'])
@login_required @login_required
@user_has_permissions()
@user_is_platform_admin @user_is_platform_admin
def organisation_preview_email_branding(org_id): 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']) @main.route("/organisations/<org_id>/settings/edit-organisation-domains", methods=['GET', 'POST'])
@login_required @login_required
@user_has_permissions()
@user_is_platform_admin @user_is_platform_admin
def edit_organisation_domains(org_id): 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']) @main.route("/organisations/<org_id>/settings/edit-go-live-notes", methods=['GET', 'POST'])
@login_required @login_required
@user_has_permissions()
@user_is_platform_admin @user_is_platform_admin
def edit_organisation_go_live_notes(org_id): def edit_organisation_go_live_notes(org_id):

View File

@@ -1,5 +1,6 @@
{% from "components/radios.html" import radios %} {% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %} {% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %} {% from "components/form.html" import form_wrapper %}
{% extends "org_template.html" %} {% extends "org_template.html" %}
@@ -9,7 +10,10 @@
{% endblock %} {% endblock %}
{% block maincolumn_content %} {% 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="grid-row">
<div class="column-five-sixths"> <div class="column-five-sixths">
{% call form_wrapper() %} {% call form_wrapper() %}

View File

@@ -1,5 +1,6 @@
{% from "components/radios.html" import radios %} {% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %} {% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %} {% from "components/form.html" import form_wrapper %}
{% extends "org_template.html" %} {% extends "org_template.html" %}
@@ -9,7 +10,10 @@
{% endblock %} {% endblock %}
{% block maincolumn_content %} {% 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="grid-row">
<div class="column-five-sixths"> <div class="column-five-sixths">
{% call form_wrapper() %} {% call form_wrapper() %}

View File

@@ -1,5 +1,6 @@
{% from "components/radios.html" import radios %} {% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %} {% 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/list-entry.html" import list_entry %}
{% from "components/form.html" import form_wrapper %} {% from "components/form.html" import form_wrapper %}
@@ -10,7 +11,10 @@
{% endblock %} {% endblock %}
{% block maincolumn_content %} {% 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="grid-row">
<div class="column-five-sixths"> <div class="column-five-sixths">
<p> <p>

View File

@@ -1,5 +1,6 @@
{% from "components/form.html" import form_wrapper %} {% from "components/form.html" import form_wrapper %}
{% from "components/page-footer.html" import page_footer %} {% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/textbox.html" import textbox %} {% from "components/textbox.html" import textbox %}
{% extends "org_template.html" %} {% extends "org_template.html" %}
@@ -9,7 +10,10 @@
{% endblock %} {% endblock %}
{% block maincolumn_content %} {% 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="grid-row">
<div class="column-five-sixths"> <div class="column-five-sixths">
<p> <p>

View File

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

View File

@@ -15,7 +15,7 @@
caption_visible=False caption_visible=False
) %} ) %}
{% call row() %} {% call row() %}
{{ text_field('Organisation name') }} {{ text_field('Name') }}
{{ text_field(current_org.name) }} {{ text_field(current_org.name) }}
{{ edit_field( {{ edit_field(
'Change', 'Change',
@@ -23,102 +23,88 @@
) )
}} }}
{% endcall %} {% 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 %} {% endcall %}
</div> </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 %} {% endblock %}

View File

@@ -1,6 +1,7 @@
{% extends "org_template.html" %} {% extends "org_template.html" %}
{% from "components/radios.html" import radios %} {% from "components/radios.html" import radios %}
{% from "components/page-footer.html" import page_footer %} {% 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/live-search.html" import live_search %}
{% from "components/form.html" import form_wrapper %} {% from "components/form.html" import form_wrapper %}
@@ -10,7 +11,10 @@
{% block maincolumn_content %} {% 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'}) %} {% call form_wrapper(data_kwargs={'preview-type': 'email'}) %}
<div class="grid-row"> <div class="grid-row">
<div class="column-full preview-pane"> <div class="column-full preview-pane">

View File

@@ -2,6 +2,7 @@
{% from "components/radios.html" import radios %} {% from "components/radios.html" import radios %}
{% from "components/live-search.html" import live_search %} {% from "components/live-search.html" import live_search %}
{% from "components/page-footer.html" import page_footer %} {% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %} {% from "components/form.html" import form_wrapper %}
{% block org_page_title %} {% block org_page_title %}
@@ -10,7 +11,10 @@
{% block maincolumn_content %} {% 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'}) %} {% call form_wrapper(data_kwargs={'preview-type': 'letter'}) %}
<div class="grid-row"> <div class="grid-row">
<div class="column-full preview-pane"> <div class="column-full preview-pane">

View File

@@ -2,6 +2,7 @@
{% from "components/textbox.html" import textbox %} {% from "components/textbox.html" import textbox %}
{% from "components/page-footer.html" import page_footer %} {% from "components/page-footer.html" import page_footer %}
{% from "components/page-header.html" import page_header %}
{% from "components/form.html" import form_wrapper %} {% from "components/form.html" import form_wrapper %}
{% block service_page_title %} {% block service_page_title %}
@@ -10,9 +11,10 @@
{% block maincolumn_content %} {% block maincolumn_content %}
<h1 class="heading-large"> {{ page_header(
Invite a team member "Invite a team member",
</h1> back_link=url_for('.manage_org_users', org_id=current_org.id)
) }}
<div class="grid-row"> <div class="grid-row">
{% call form_wrapper(class="column-three-quarters") %} {% call form_wrapper(class="column-three-quarters") %}
{{ textbox(form.email_address, width='1-1', safe_error_message=True) }} {{ 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, client_request,
mock_get_organisation, mock_get_organisation,
organisation_one organisation_one
): ):
expected_rows = [ client_request.get(
'Label Value Action', '.organisation_settings',
'Organisation name Org 1 Change', org_id=organisation_one['id'],
] _expected_status=403,
)
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'])
def test_organisation_settings_for_platform_admin( def test_organisation_settings_for_platform_admin(
@@ -189,10 +181,8 @@ def test_organisation_settings_for_platform_admin(
): ):
expected_rows = [ expected_rows = [
'Label Value Action', 'Label Value Action',
'Organisation name Org 1 Change', 'Name Org 1 Change',
'Sector Not set Change',
'Label Value Action',
'Organisation type Not set Change',
'Crown organisation Yes Change', 'Crown organisation Yes Change',
'Data sharing and financial agreement Not signed Change', 'Data sharing and financial agreement Not signed Change',
'Request to go live notes None Change', 'Request to go live notes None Change',