From d61022e3e6c9e43efbbebd91bb010b19d1a18f51 Mon Sep 17 00:00:00 2001 From: Pea Tyczynska Date: Wed, 14 Nov 2018 12:16:57 +0000 Subject: [PATCH] Add flash messages and error handling to delete folder flow --- app/main/views/templates.py | 26 ++++++++++++++++--- tests/app/main/views/test_template_folders.py | 2 +- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/main/views/templates.py b/app/main/views/templates.py index e120938d0..5bd013158 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -406,11 +406,31 @@ def delete_template_folder(service_id, template_folder_id): if not current_service.has_permission('edit_folders'): abort(403) form = TemplateFolderForm() + template_folder_path = current_service.get_template_folder_path(template_folder_id) + template_folder_name = template_folder_path[-1]["name"] + if request.method == 'POST': + try: + template_folder_api_client.delete_template_folder(current_service.id, template_folder_id) - template_folder_api_client.delete_template_folder(current_service.id, template_folder_id) + flash("'{}' folder has been removed".format(template_folder_name), 'info') + return redirect( + url_for('.choose_template', service_id=service_id) + ) + except HTTPError as e: + msg = "Folder is not empty" + if e.status_code == 400 and msg in e.message: + flash("'{}' folder is not empty".format(template_folder_name), 'info') + return redirect(url_for('.choose_template', service_id=service_id)) + else: + abort(500, e) - return redirect( - url_for('.choose_template', service_id=service_id) + flash("Are you sure you want to remove '{}' folder?".format(template_folder_name), 'remove') + return render_template( + 'views/templates/manage-template-folder.html', + form=form, + template_folder_path=template_folder_path, + current_service_id=current_service.id, + template_folder_id=template_folder_id ) diff --git a/tests/app/main/views/test_template_folders.py b/tests/app/main/views/test_template_folders.py index ecfe7dae6..f0f4ffdd4 100644 --- a/tests/app/main/views/test_template_folders.py +++ b/tests/app/main/views/test_template_folders.py @@ -382,7 +382,7 @@ def test_delete_folder(client_request, service_one, mock_get_template_folders, m mock_delete = mocker.patch('app.template_folder_api_client.delete_template_folder') folder_id = str(uuid.uuid4()) mock_get_template_folders.return_value = [ - {'id': folder_id, 'name': 'folder_two', 'parent_id': None}, + {'id': folder_id, 'name': 'sacrifice', 'parent_id': None}, ] service_one['permissions'] += ['edit_folders']