From 5158377b2e9e5f0183d1630b33ca94637372b30b Mon Sep 17 00:00:00 2001 From: Pea Tyczynska Date: Tue, 19 Feb 2019 15:35:51 +0000 Subject: [PATCH] Add a get view and template that enable changing team members email --- app/main/views/manage_users.py | 18 ++++++++++++- app/templates/views/manage-users.html | 2 ++ .../views/manage-users/edit-user-email.html | 27 +++++++++++++++++++ tests/app/main/views/test_manage_users.py | 20 ++++++++++++++ 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 app/templates/views/manage-users/edit-user-email.html diff --git a/app/main/views/manage_users.py b/app/main/views/manage_users.py index cbbff87c8..a24339fb7 100644 --- a/app/main/views/manage_users.py +++ b/app/main/views/manage_users.py @@ -9,7 +9,7 @@ from app import ( user_api_client, ) from app.main import main -from app.main.forms import InviteUserForm, PermissionsForm, SearchUsersForm +from app.main.forms import InviteUserForm, PermissionsForm, SearchUsersForm, ChangeEmailForm from app.models.user import permissions from app.utils import user_has_permissions @@ -122,6 +122,22 @@ def remove_user_from_service(service_id, user_id): ) +@main.route("/services//users//edit-email", methods=['GET']) +@login_required +@user_has_permissions('manage_service') +def edit_user_email(service_id, user_id): + user = user_api_client.get_user(user_id) + user_email = user.email_address + form = ChangeEmailForm(user_api_client.is_email_already_in_use(user_email), email_address=user_email) + + return render_template( + 'views/manage-users/edit-user-email.html', + user=user, + form=form, + service_id=service_id + ) + + @main.route("/services//cancel-invited-user/", methods=['GET']) @user_has_permissions('manage_service') def cancel_invited_user(service_id, invited_user_id): diff --git a/app/templates/views/manage-users.html b/app/templates/views/manage-users.html index da3157c5a..4c65a08a8 100644 --- a/app/templates/views/manage-users.html +++ b/app/templates/views/manage-users.html @@ -64,6 +64,8 @@ Cancel invitation {% elif user.state == 'active' and current_user.id != user.id %} Edit permissions +
+ Edit user email {% endif %} {% endif %} diff --git a/app/templates/views/manage-users/edit-user-email.html b/app/templates/views/manage-users/edit-user-email.html new file mode 100644 index 000000000..35164d463 --- /dev/null +++ b/app/templates/views/manage-users/edit-user-email.html @@ -0,0 +1,27 @@ +{% extends "withoutnav_template.html" %} +{% from "components/textbox.html" import textbox %} +{% from "components/page-footer.html" import page_footer %} +{% from "components/form.html" import form_wrapper %} + +{% block per_page_title %} + Edit user email +{% endblock %} + +{% block maincolumn_content %} + +

Edit user email

+

for {{ user.name }}

+
+
+ {% call form_wrapper() %} + {{ textbox(form.email_address) }} + {{ page_footer( + 'Save', + back_link=url_for('.manage_users', service_id=service_id), + back_link_text="Back to team members" + ) }} + {% endcall %} +
+
+ +{% endblock %} diff --git a/tests/app/main/views/test_manage_users.py b/tests/app/main/views/test_manage_users.py index 5cf45990d..b6b9d9206 100644 --- a/tests/app/main/views/test_manage_users.py +++ b/tests/app/main/views/test_manage_users.py @@ -769,3 +769,23 @@ def test_can_invite_user_as_platform_admin( response = logged_in_client.get(url_for('main.manage_users', service_id=service_one['id'])) resp_text = response.get_data(as_text=True) assert url_for('.invite_user', service_id=service_one['id']) in resp_text + + +def test_edit_user_email_page( + client_request, + active_user_with_permissions, + service_one, + mocker +): + user = active_user_with_permissions + test_user = mocker.patch('app.user_api_client.get_user', return_value=user) + + page = client_request.get( + 'main.edit_user_email', + service_id=service_one['id'], + user_id=test_user.id + ) + + assert page.find('h1').text == "Edit user email" + assert page.select('p[id=user_name]')[0].text == "for " + user.name + assert page.select('input[type=email]')[0].attrs["value"] == user.email_address