Merge pull request #1934 from alphagov/update-service-name

Update Organisation Name
This commit is contained in:
Chris Waszczuk
2018-03-12 10:13:57 +00:00
committed by GitHub
10 changed files with 354 additions and 103 deletions

View File

@@ -329,6 +329,14 @@ class RenameServiceForm(StripWhitespaceForm):
])
class RenameOrganisationForm(StripWhitespaceForm):
name = StringField(
u'Organisation name',
validators=[
DataRequired(message='Cant be empty')
])
class CreateServiceForm(StripWhitespaceForm):
name = StringField(
u'Whats your service called?',

View File

@@ -1,13 +1,20 @@
from flask import flash, redirect, render_template, request, url_for
from flask import flash, redirect, render_template, request, session, url_for
from flask_login import current_user, login_required
from notifications_python_client.errors import HTTPError
from werkzeug.exceptions import abort
from app import org_invite_api_client, organisations_client, user_api_client
from app import (
current_organisation,
org_invite_api_client,
organisations_client,
user_api_client,
)
from app.main import main
from app.main.forms import (
ConfirmPasswordForm,
CreateOrUpdateOrganisation,
InviteOrgUserForm,
RenameOrganisationForm,
SearchUsersForm,
)
from app.utils import user_is_platform_admin
@@ -56,31 +63,6 @@ def organisation_dashboard(org_id):
)
@main.route("/organisations/<org_id>/edit", methods=['GET', 'POST'])
@login_required
@user_is_platform_admin
def update_organisation(org_id):
org = organisations_client.get_organisation(org_id)
form = CreateOrUpdateOrganisation()
if form.validate_on_submit():
organisations_client.update_organisation(
org_id=org_id,
name=form.name.data
)
return redirect(url_for('.organisations'))
form.name.data = org['name']
return render_template(
'views/organisations/organisation/update-organisation.html',
form=form,
organisation=org
)
@main.route("/organisations/<org_id>/users", methods=['GET'])
@login_required
@user_is_platform_admin
@@ -174,3 +156,68 @@ def cancel_invited_org_user(org_id, invited_user_id):
org_invite_api_client.cancel_invited_user(org_id=org_id, invited_user_id=invited_user_id)
return redirect(url_for('main.manage_org_users', org_id=org_id))
@main.route("/organisations/<org_id>/settings/", methods=['GET'])
@login_required
@user_is_platform_admin
def organisation_settings(org_id):
return render_template(
'views/organisations/organisation/settings/index.html',
)
@main.route("/organisations/<org_id>/settings/edit-name", methods=['GET', 'POST'])
@login_required
@user_is_platform_admin
def edit_organisation_name(org_id):
form = RenameOrganisationForm()
if request.method == 'GET':
form.name.data = current_organisation.get('name')
if form.validate_on_submit():
unique_name = organisations_client.is_organisation_name_unique(org_id, form.name.data)
if not unique_name:
form.name.errors.append("This organisation name is already in use")
return render_template('views/organisations/organisation/settings/edit-name/index.html', form=form)
session['organisation_name_change'] = form.name.data
return redirect(url_for('.confirm_edit_organisation_name', org_id=org_id))
return render_template(
'views/organisations/organisation/settings/edit-name/index.html',
form=form,
)
@main.route("/organisations/<org_id>/settings/edit-name/confirm", methods=['GET', 'POST'])
@login_required
@user_is_platform_admin
def confirm_edit_organisation_name(org_id):
# Validate password for form
def _check_password(pwd):
return user_api_client.verify_password(current_user.id, pwd)
form = ConfirmPasswordForm(_check_password)
if form.validate_on_submit():
try:
organisations_client.update_organisation_name(
current_organisation['id'],
name=session['organisation_name_change'],
)
except HTTPError as e:
error_msg = "Organisation name already exists"
if e.status_code == 400 and error_msg in e.message:
# Redirect the user back to the change service name screen
flash('This organisation name is already in use', 'error')
return redirect(url_for('main.edit_organisation_name', org_id=org_id))
else:
raise e
else:
session.pop('organisation_name_change')
return redirect(url_for('.organisation_settings', org_id=org_id))
return render_template(
'views/organisations/organisation/settings/edit-name/confirm.html',
new_name=session['organisation_name_change'],
form=form)