mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-23 20:01:01 -05:00
Only show relevant folders
A folder is relevant if it, or any of its descents contain a template of the kind you’re looking for. If you’re not filtering by template type then you should see all folders.
This commit is contained in:
@@ -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=(
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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',
|
||||
],
|
||||
),
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user