From 17b99c9bf23f735841f957a9f41efb3d7adedcc5 Mon Sep 17 00:00:00 2001
From: Chris Hill-Scott @8K7b-os5^?}4tD W
+
diff --git a/app/templates/views/invite-user.html b/app/templates/views/invite-user.html new file mode 100644 index 000000000..2ca19bc2f --- /dev/null +++ b/app/templates/views/invite-user.html @@ -0,0 +1,48 @@ +{% extends "withnav_template.html" %} +{% from "components/yes-no.html" import yes_no %} +{% from "components/textbox.html" import textbox %} +{% from "components/page-footer.html" import page_footer %} + +{% block page_title %} +Manage users – GOV.UK Notify +{% endblock %} + +{% block maincolumn_content %} + +- Invite users -
+ {% call(item) list_table( + users, caption='Active', **table_options + ) %} + {% call field() %} + {{ item.name }} + {% endcall %} + {{ boolean_field(item.permission_send_messages) }} + {{ boolean_field(item.permission_manage_service) }} + {{ boolean_field(item.permission_manage_api_keys) }} + {% call field(align='right') %} + Change + {% endcall %} + {% endcall %} + -{% call(item) list_table( - users, - caption='Active users', - field_headings=['Name', 'Send messages', 'Manage Service', 'Manage API keys', 'Link to change'], - field_headings_visible=True, - caption_visible=True -) %} - {% call field() %} - {{ item.name }} - {% endcall %} - {% call field() %} - {{ "✔" if item.permission_send_messages else "❌" }} - {% endcall %} - {% call field() %} - {{ "✔" if item.permission_manage_service else "❌" }} - {% endcall %} - {% call field() %} - {{ "✔" if item.permission_manage_api_keys else "❌" }} - {% endcall %} - {% call field(align='right') %} - Change - {% endcall %} -{% endcall %} - -{% call(item) list_table( - invited_users, - caption='Invited users', - field_headings=['Name', 'Send messages', 'Manage Service', 'Manage API keys', 'Link to change'], - field_headings_visible=True, - caption_visible=True -) %} - {% call field() %} - {{ item.email_localpart }} - {% endcall %} - {% call field() %} - {{ "✔" if item.permission_send_messages else "❌" }} - {% endcall %} - {% call field() %} - {{ "✔" if item.permission_manage_service else "❌" }} - {% endcall %} - {% call field() %} - {{ "✔" if item.permission_manage_api_keys else "❌" }} - {% endcall %} - {% call field(align='right') %} - Change - {% endcall %} -{% endcall %} + {% if invited_users %} + {% call(item) list_table( + invited_users, caption='Invited', **table_options + ) %} + {% call field() %} + {{ item.email_localpart }} + {% endcall %} + {{ boolean_field(item.permission_send_messages) }} + {{ boolean_field(item.permission_manage_service) }} + {{ boolean_field(item.permission_manage_api_keys) }} + {% call field(align='right') %} + Change + {% endcall %} + {% endcall %} + {% endif %} {% endblock %} diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 7fbc03610..3938b00a8 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -82,6 +82,7 @@ gulp.task('watchForChanges', function() { gulp.watch(paths.src + 'javascripts/**/*', ['javascripts']); gulp.watch(paths.src + 'stylesheets/**/*', ['sass']); gulp.watch(paths.src + 'images/**/*', ['images']); + gulp.watch('gulpfile.babel.js', ['default']); }); gulp.task('lint:sass', () => gulp diff --git a/tests/app/main/views/test_manage_users.py b/tests/app/main/views/test_manage_users.py new file mode 100644 index 000000000..000464ecb --- /dev/null +++ b/tests/app/main/views/test_manage_users.py @@ -0,0 +1,87 @@ +import json +from flask import url_for + + +def test_should_show_overview_page( + app_, + api_user_active, + mock_login, + mock_get_service +): + with app_.test_request_context(): + with app_.test_client() as client: + client.login(api_user_active) + response = client.get(url_for('main.manage_users', service_id=55555)) + + assert 'Manage team' in response.get_data(as_text=True) + assert 'Henry Hadlow' in response.get_data(as_text=True) + assert 'caley.smolska' in response.get_data(as_text=True) + assert response.status_code == 200 + + +def test_should_show_page_for_one_user( + app_, + api_user_active, + mock_login, + mock_get_service +): + with app_.test_request_context(): + with app_.test_client() as client: + client.login(api_user_active) + response = client.get(url_for('main.edit_user', service_id=55555, user_id=0)) + + assert 'Henry Hadlow' in response.get_data(as_text=True) + assert response.status_code == 200 + + +def test_redirect_after_saving_user( + app_, + api_user_active, + mock_login, + mock_get_service +): + with app_.test_request_context(): + with app_.test_client() as client: + client.login(api_user_active) + response = client.post(url_for( + 'main.edit_user', service_id=55555, user_id=0 + )) + + assert response.status_code == 302 + assert response.location == url_for( + 'main.manage_users', service_id=55555, _external=True + ) + + +def test_should_show_page_for_inviting_user( + app_, + api_user_active, + mock_login, + mock_get_service +): + with app_.test_request_context(): + with app_.test_client() as client: + client.login(api_user_active) + response = client.get(url_for('main.invite_user', service_id=55555)) + + assert 'Add a new team member' in response.get_data(as_text=True) + assert response.status_code == 200 + + +def test_invite_user( + app_, + api_user_active, + mock_login, + mock_get_service +): + with app_.test_request_context(): + with app_.test_client() as client: + client.login(api_user_active) + response = client.post( + url_for('main.invite_user', service_id=55555), + data={'email_address': 'test@example.gov.uk'}, + follow_redirects=True + ) + + assert response.status_code == 200 + assert 'Invite sent to test@example.gov.uk' in response.get_data(as_text=True) From fd54eeaeb7552f547d3e20a5c8650cab04e6b6b2 Mon Sep 17 00:00:00 2001 From: Chris Hill-ScottUsed to show the status of a thing or action.
+Used to show the status of a thing or action.
- {{ banner("You sent 1,234 text messages", with_tick=True) }} + {{ banner("You sent 1,234 text messages", with_tick=True) }} - {{ banner('You’re not allowed to do this', 'dangerous')}} + {{ banner('You’re not allowed to do this', 'dangerous')}} - {{ banner('Are you sure you want to delete?', 'dangerous', delete_button="Yes, delete this thing")}} + {{ banner('Are you sure you want to delete?', 'dangerous', delete_button="Yes, delete this thing")}} - {{ banner( - 'Send your first message'|safe, - subhead='Get started', - type='tip' - )}} + {{ banner( + 'Send your first message'|safe, + subhead='Get started', + type='tip' + )}} + + {{ banner('You could go to jail', 'important')}} +Used to show, preview or choose an SMS message.
+Used to show, preview or choose an SMS template.
Used to show, preview or choose an email template.
+ ++ Used for comparing rows of data. +
+ {% call mapping_table( + caption='Account settings', + field_headings=['Label', 'True', 'False', 'Action'], + field_headings_visible=False, + caption_visible=True + ) %} + {% call row() %} + {{ text_field('Username' )}} + {{ boolean_field(True) }} + {{ boolean_field(False) }} + {% call field(align='right') %} + Change + {% endcall %} + {% endcall %} {% endcall %} - {% call field() %} - admin - {% endcall %} - {% call field(align='right') %} - Change - {% endcall %} - {% endcall %} - {% endcall %} - {% call(item) list_table( - [ - { - 'file': 'dispatch_20151114.csv', 'status': 'Queued' - }, - { - 'file': 'dispatch_20151117.csv', 'status': 'Delivered' - }, - { - 'file': 'remdinder_monday.csv', 'status': 'Failed' - } - ], - caption='Messages', - field_headings=['File', right_aligned_field_heading('Status')], - field_headings_visible=True, - caption_visible=False - ) %} - {% call field() %} - {{ item.file }} - {% endcall %} - {% call field( - align='right', - status='error' if item.status == 'Failed' else 'default' - ) %} - {{ item.status }} - {% endcall %} - {% endcall %} + {% call(item) list_table( + [ + { + 'file': 'dispatch_20151114.csv', 'status': 'Queued' + }, + { + 'file': 'dispatch_20151117.csv', 'status': 'Delivered' + }, + { + 'file': 'remdinder_monday.csv', 'status': 'Failed' + } + ], + caption='Messages', + field_headings=['File', right_aligned_field_heading('Status')], + field_headings_visible=True, + caption_visible=False + ) %} + {% call field() %} + {{ item.file }} + {% endcall %} + {% call field( + align='right', + status='error' if item.status == 'Failed' else 'default' + ) %} + {{ item.status }} + {% endcall %} + {% endcall %} - {% call(item) list_table( - [], - caption='Jobs', - field_headings=['Job', 'Time'], - caption_visible=True, - empty_message='You haven’t scheduled any jobs yet' - ) %} - {% call field() %} - {{ item.job }} - {% endcall %} - {% call field() %} - {{ item.time }} - {% endcall %} - {% endcall %} + {% call(item) list_table( + [], + caption='Jobs', + field_headings=['Job', 'Time'], + caption_visible=True, + empty_message='You haven’t scheduled any jobs yet' + ) %} + {% call field() %} + {{ item.job }} + {% endcall %} + {% call field() %} + {{ item.time }} + {% endcall %} + {% endcall %} ++ Add a job now +
+- Add new template -
- -- {{ user.email_localpart }}@digital.cabinet-office.gov.uk + {{ current_user.email_address }}
{% else %} {{ textbox(form.email_address, hint='Email address must end in .gov.uk', width='1-1') }} @@ -37,7 +37,9 @@ Manage users – GOV.UK Notify {{ page_footer( 'Save', delete_link=url_for('.delete_user', service_id=service_id, user_id=user_id), - delete_link_text='delete this account' + delete_link_text='Delete this account', + back_link=url_for('.manage_users', service_id=service_id), + back_link_text='Cancel' ) }} {% else %} {{ page_footer('Send invitation email') }} diff --git a/app/templates/views/send-sms.html b/app/templates/views/send-sms.html index 351115c7f..32be81c72 100644 --- a/app/templates/views/send-sms.html +++ b/app/templates/views/send-sms.html @@ -20,16 +20,11 @@ - {{file_upload(form.file, button_text='Choose a CSV file')}} - - {{ page_footer( - "Continue to preview" - ) }} - + {{file_upload(form.file, button_text='Upload a CSV file')}} {% endblock %} diff --git a/app/templates/views/service_dashboard.html b/app/templates/views/service_dashboard.html index 09443fc40..e0b5527a5 100644 --- a/app/templates/views/service_dashboard.html +++ b/app/templates/views/service_dashboard.html @@ -25,21 +25,9 @@ {% if not jobs %} {{ banner( - """ -