From 666381e23dfc32a447c5ea44738946b058220f05 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Tue, 13 Nov 2018 16:05:05 +0000 Subject: [PATCH] Pre-populate rename folder form with current name Often people will be editing the existing name, not changing it completely. This matches what we do when someone wants to rename their template or service. --- app/main/views/templates.py | 5 ++++- app/models/service.py | 10 ++++++++++ tests/app/main/views/test_template_folders.py | 12 +++++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) 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):