mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-06 11:23:48 -05:00
Add 'Uploads' hub and navigation
The uploads hub is just a page with text for now - there are no actions available on the page. It is linked to from a new 'Uploads' menu item on the left of the page which is only visible if your service has the `letter` and `upload_letters` permissions and if the current user has permissions to send messages.
This commit is contained in:
@@ -33,6 +33,7 @@ from app.main.views import ( # noqa isort:skip
|
||||
styleguide,
|
||||
templates,
|
||||
two_factor,
|
||||
uploads,
|
||||
user_profile,
|
||||
verify,
|
||||
)
|
||||
|
||||
10
app/main/views/uploads.py
Normal file
10
app/main/views/uploads.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from flask import render_template
|
||||
|
||||
from app.main import main
|
||||
from app.utils import user_has_permissions
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/uploads")
|
||||
@user_has_permissions('send_messages')
|
||||
def uploads(service_id):
|
||||
return render_template('views/uploads/index.html')
|
||||
@@ -300,6 +300,7 @@ class HeaderNavigation(Navigation):
|
||||
'template_history',
|
||||
'template_usage',
|
||||
'trial_mode',
|
||||
'uploads',
|
||||
'usage',
|
||||
'view_job',
|
||||
'view_job_csv',
|
||||
@@ -359,6 +360,9 @@ class MainNavigation(Navigation):
|
||||
'view_template_version',
|
||||
'view_template_versions',
|
||||
},
|
||||
'uploads': {
|
||||
'uploads',
|
||||
},
|
||||
'team-members': {
|
||||
'confirm_edit_user_email',
|
||||
'confirm_edit_user_mobile_number',
|
||||
@@ -844,6 +848,7 @@ class CaseworkNavigation(Navigation):
|
||||
'two_factor_email_sent',
|
||||
'update_email_branding',
|
||||
'update_letter_branding',
|
||||
'uploads',
|
||||
'usage',
|
||||
'user_information',
|
||||
'user_profile',
|
||||
@@ -1118,6 +1123,7 @@ class OrgNavigation(Navigation):
|
||||
'two_factor_email_sent',
|
||||
'update_email_branding',
|
||||
'update_letter_branding',
|
||||
'uploads',
|
||||
'usage',
|
||||
'user_information',
|
||||
'user_profile',
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
<li><a href="{{ url_for('.view_jobs', service_id=current_service.id) }}" {{ casework_navigation.is_selected('uploaded-files') }}>Uploaded files</a></li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if current_user.has_permissions('send_messages') and current_service.has_permission('letter') and current_service.has_permission('upload_letters') %}
|
||||
<li><a href="{{ url_for('main.uploads', service_id=current_service.id) }}" {{ main_navigation.is_selected('uploads') }}>Uploads</a></li>
|
||||
{% endif %}
|
||||
<li><a href="{{ url_for('.manage_users', service_id=current_service.id) }}" {{ main_navigation.is_selected('team-members') }}>Team members</a></li>
|
||||
{% if current_user.has_permissions('manage_service', allow_org_user=True) %}
|
||||
|
||||
16
app/templates/views/uploads/index.html
Normal file
16
app/templates/views/uploads/index.html
Normal file
@@ -0,0 +1,16 @@
|
||||
{% extends "withnav_template.html" %}
|
||||
{% from "components/page-header.html" import page_header %}
|
||||
|
||||
{% block service_page_title %}
|
||||
Uploads
|
||||
{% endblock %}
|
||||
|
||||
{% block maincolumn_content %}
|
||||
<div class="grid-row">
|
||||
<div class="column-two-thirds">
|
||||
{{ page_header('Uploads') }}
|
||||
|
||||
<p>Upload a letter and Notify will print, pack and post it for you.</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -960,6 +960,8 @@ def test_menu_send_messages(
|
||||
mock_get_inbound_sms_summary,
|
||||
mock_get_free_sms_fragment_limit,
|
||||
):
|
||||
service_one['permissions'] = ['email', 'sms', 'letter', 'upload_letters']
|
||||
|
||||
with app_.test_request_context():
|
||||
resp = _test_dashboard_menu(
|
||||
mocker,
|
||||
@@ -972,6 +974,7 @@ def test_menu_send_messages(
|
||||
'main.choose_template',
|
||||
service_id=service_one['id'],
|
||||
) in page
|
||||
assert url_for('main.uploads', service_id=service_one['id']) in page
|
||||
assert url_for('main.manage_users', service_id=service_one['id']) in page
|
||||
|
||||
assert url_for('main.service_settings', service_id=service_one['id']) not in page
|
||||
@@ -979,6 +982,30 @@ def test_menu_send_messages(
|
||||
assert url_for('main.view_providers') not in page
|
||||
|
||||
|
||||
def test_menu_send_messages_when_service_does_not_have_upload_letters_permission(
|
||||
mocker,
|
||||
app_,
|
||||
api_user_active,
|
||||
service_one,
|
||||
mock_get_service_templates,
|
||||
mock_get_jobs,
|
||||
mock_get_template_statistics,
|
||||
mock_get_service_statistics,
|
||||
mock_get_usage,
|
||||
mock_get_inbound_sms_summary,
|
||||
mock_get_free_sms_fragment_limit,
|
||||
):
|
||||
with app_.test_request_context():
|
||||
resp = _test_dashboard_menu(
|
||||
mocker,
|
||||
app_,
|
||||
api_user_active,
|
||||
service_one,
|
||||
['view_activity', 'send_messages'])
|
||||
page = resp.get_data(as_text=True)
|
||||
assert url_for('main.uploads', service_id=service_one['id']) not in page
|
||||
|
||||
|
||||
def test_menu_manage_service(
|
||||
mocker,
|
||||
app_,
|
||||
|
||||
5
tests/app/main/views/test_uploads.py
Normal file
5
tests/app/main/views/test_uploads.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from tests.conftest import SERVICE_ONE_ID
|
||||
|
||||
|
||||
def test_get_upload_hub_page(client_request):
|
||||
client_request.get('main.uploads', service_id=SERVICE_ONE_ID)
|
||||
Reference in New Issue
Block a user