diff --git a/app/main/views/templates.py b/app/main/views/templates.py index 297bbba21..71949b9f3 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -126,7 +126,7 @@ def choose_template(service_id, template_type='all', template_folder_id=None): current_template_folder_id=template_folder_id, can_manage_folders=can_manage_folders(), template_folder_path=current_service.get_template_folder_path(template_folder_id), - template_folders=current_service.get_template_folders(template_folder_id), + template_folders=current_service.get_template_folders(template_folder_id, template_type), templates=current_service.get_templates(template_type, template_folder_id), show_search_box=(len(current_service.get_templates(template_type)) > 7), show_template_nav=( diff --git a/app/models/service.py b/app/models/service.py index 7780347f4..f60151b38 100644 --- a/app/models/service.py +++ b/app/models/service.py @@ -298,12 +298,31 @@ class Service(): def all_template_folder_ids(self): return {folder['id'] for folder in self.all_template_folders} - def get_template_folders(self, parent_folder_id=None): + def get_template_folders(self, parent_folder_id=None, template_type='all'): return [ folder for folder in self.all_template_folders - if folder['parent_id'] == parent_folder_id + if ( + folder['parent_id'] == parent_folder_id and + self.show_folder(folder['id'], template_type) + ) ] + def show_folder(self, template_folder_id, template_type='all'): + + if template_type == 'all': + return True + + if self.get_templates(template_type, template_folder_id): + return True + + if any( + self.show_folder(child_folder['id'], template_type) + for child_folder in self.get_template_folders(template_folder_id, template_type) + ): + return True + + return False + def get_template_folder_path(self, template_folder_id): if template_folder_id is None: return [] @@ -322,7 +341,7 @@ class Service(): def get_template_folders_and_templates(self, template_type, template_folder_id): return ( self.get_templates(template_type, template_folder_id) + - self.get_template_folders(template_folder_id) + self.get_template_folders(template_folder_id, template_type) ) def move_to_folder(self, ids_to_move, move_to): diff --git a/tests/app/main/views/test_template_folders.py b/tests/app/main/views/test_template_folders.py index eb14ceb9a..c03de789f 100644 --- a/tests/app/main/views/test_template_folders.py +++ b/tests/app/main/views/test_template_folders.py @@ -111,8 +111,6 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare {'template_type': 'sms'}, ['All', 'Email', 'Letter'], [ - 'folder_one Folder containing templates', - 'folder_two Folder containing templates', 'sms_template_one Text message template', 'sms_template_two Text message template', ], @@ -122,8 +120,6 @@ def test_post_add_template_folder_page(client_request, service_one, mocker, pare {'template_type': 'sms', 'template_folder_id': PARENT_FOLDER_ID}, ['All', 'Email', 'Letter'], [ - 'folder_one_one Folder containing templates', - 'folder_one_two Folder containing templates', ], ), (