mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-11 10:28:41 -04: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,
|
current_template_folder_id=template_folder_id,
|
||||||
can_manage_folders=can_manage_folders(),
|
can_manage_folders=can_manage_folders(),
|
||||||
template_folder_path=current_service.get_template_folder_path(template_folder_id),
|
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),
|
templates=current_service.get_templates(template_type, template_folder_id),
|
||||||
show_search_box=(len(current_service.get_templates(template_type)) > 7),
|
show_search_box=(len(current_service.get_templates(template_type)) > 7),
|
||||||
show_template_nav=(
|
show_template_nav=(
|
||||||
|
|||||||
+22
-3
@@ -298,12 +298,31 @@ class Service():
|
|||||||
def all_template_folder_ids(self):
|
def all_template_folder_ids(self):
|
||||||
return {folder['id'] for folder in self.all_template_folders}
|
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 [
|
return [
|
||||||
folder for folder in self.all_template_folders
|
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):
|
def get_template_folder_path(self, template_folder_id):
|
||||||
if template_folder_id is None:
|
if template_folder_id is None:
|
||||||
return []
|
return []
|
||||||
@@ -322,7 +341,7 @@ class Service():
|
|||||||
def get_template_folders_and_templates(self, template_type, template_folder_id):
|
def get_template_folders_and_templates(self, template_type, template_folder_id):
|
||||||
return (
|
return (
|
||||||
self.get_templates(template_type, template_folder_id) +
|
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):
|
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'},
|
{'template_type': 'sms'},
|
||||||
['All', 'Email', 'Letter'],
|
['All', 'Email', 'Letter'],
|
||||||
[
|
[
|
||||||
'folder_one Folder containing templates',
|
|
||||||
'folder_two Folder containing templates',
|
|
||||||
'sms_template_one Text message template',
|
'sms_template_one Text message template',
|
||||||
'sms_template_two 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},
|
{'template_type': 'sms', 'template_folder_id': PARENT_FOLDER_ID},
|
||||||
['All', 'Email', 'Letter'],
|
['All', 'Email', 'Letter'],
|
||||||
[
|
[
|
||||||
'folder_one_one Folder containing templates',
|
|
||||||
'folder_one_two Folder containing templates',
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
|
|||||||
Reference in New Issue
Block a user