diff --git a/app/main/views/templates.py b/app/main/views/templates.py index 8c91f609b..5fd6e2e7f 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -374,7 +374,10 @@ def manage_template_folder(service_id, template_folder_id): if not current_service.has_permission('edit_folders'): abort(403) - form = TemplateFolderForm() + form = TemplateFolderForm( + name=current_service.get_template_folder(template_folder_id)['name'] + ) + if form.validate_on_submit(): template_folder_api_client.update_template_folder( current_service.id, template_folder_id, name=form.name.data diff --git a/app/models/service.py b/app/models/service.py index cd6de8190..ac00a3e5d 100644 --- a/app/models/service.py +++ b/app/models/service.py @@ -1,3 +1,4 @@ +from flask import abort from notifications_utils.field import Field from werkzeug.utils import cached_property @@ -307,6 +308,15 @@ class Service(): ) ] + def get_template_folder(self, folder_id): + try: + return next( + folder for folder in self.all_template_folders + if folder['id'] == folder_id + ) + except StopIteration: + abort(404) + def is_folder_visible(self, template_folder_id, template_type='all'): if template_type == 'all': diff --git a/tests/app/main/views/test_template_folders.py b/tests/app/main/views/test_template_folders.py index 83022ee0e..036aece4f 100644 --- a/tests/app/main/views/test_template_folders.py +++ b/tests/app/main/views/test_template_folders.py @@ -324,7 +324,17 @@ def test_get_manage_folder_page(client_request, service_one, mock_get_template_f service_id=service_one['id'], template_folder_id=folder_id ) - assert page.select_one('input[name=name]') is not None + assert page.select_one('input[name=name]')['value'] == 'folder_two' + + +def test_manage_folder_page_404s(client_request, service_one, mock_get_template_folders): + service_one['permissions'] += ['edit_folders'] + client_request.get( + 'main.manage_template_folder', + service_id=service_one['id'], + template_folder_id=str(uuid.uuid4()), + _expected_status=404, + ) def test_get_manage_folder_page_no_permissions(client_request, service_one, mock_get_template_folders):