Merge pull request #2841 from GSA/2795-bug-when-a-new-template-folder-is-added-existing-users-are-automatically-given-permission-to-it

fix and update to template manage
This commit is contained in:
ccostino
2025-08-20 10:42:25 -04:00
committed by GitHub
8 changed files with 64 additions and 12 deletions

View File

@@ -138,6 +138,7 @@
};
CollapsibleCheckboxes.prototype.toggleAll = function(e) {
e.preventDefault();
e.stopPropagation();
const allChecked = this.$checkboxes.filter(':checked').length === this.$checkboxes.length;
if (allChecked) {

View File

@@ -1726,10 +1726,14 @@ class TemplateFolderForm(StripWhitespaceForm):
def __init__(self, all_service_users=None, *args, **kwargs):
super().__init__(*args, **kwargs)
if all_service_users is not None:
self.users_with_permission.all_service_users = all_service_users
regular_users = [user for user in all_service_users if not user.platform_admin]
platform_admins = [user for user in all_service_users if user.platform_admin]
self.users_with_permission.all_service_users = regular_users
self.users_with_permission.choices = [
(item.id, item.name) for item in all_service_users
(item.id, item.name) for item in regular_users
]
self.platform_admins = platform_admins
users_with_permission = USWDSCollapsibleCheckboxesField(
"Team members who can see this folder", field_label="team member"

View File

@@ -180,7 +180,10 @@ def process_folder_management_form(form, current_folder_id):
if form.is_add_folder_op:
new_folder_id = template_folder_api_client.create_template_folder(
current_service.id, name=form.get_folder_name(), parent_id=current_folder_id
current_service.id,
name=form.get_folder_name(),
parent_id=current_folder_id,
created_by_id=str(current_user.id)
)
if form.is_move_op:

View File

@@ -4,8 +4,10 @@ from app.notify_client import NotifyAdminAPIClient, cache
class TemplateFolderAPIClient(NotifyAdminAPIClient):
@cache.delete("service-{service_id}-template-folders")
def create_template_folder(self, service_id, name, parent_id=None):
def create_template_folder(self, service_id, name, parent_id=None, created_by_id=None):
data = {"name": name, "parent_id": parent_id}
if created_by_id:
data["created_by_id"] = created_by_id
return self.post("/service/{}/template-folder".format(service_id), data)[
"data"
]["id"]

View File

@@ -86,13 +86,17 @@
</ul>
{% if current_service.all_template_folders %}
<p class="usa-body tick-cross-list-hint">
{% set folder_count = user.template_folders_for_service(current_service) | length %}
{% if folder_count == 0 %}
Cannot see any folders
{% elif folder_count != current_service.all_template_folders | length %}
Can see {{ folder_count }} folder{% if folder_count > 1 %}s{% endif %}
{% if user.platform_admin %}
Platform admin can see all folders
{% else %}
Can see all folders
{% set folder_count = user.template_folders_for_service(current_service) | length %}
{% if folder_count == 0 %}
Cannot see any folders
{% elif folder_count != current_service.all_template_folders | length %}
Can see {{ folder_count }} folder{% if folder_count > 1 %}s{% endif %}
{% else %}
Can see all folders
{% endif %}
{% endif %}
</p>
{% endif %}

View File

@@ -27,6 +27,14 @@
}) }}
{% if current_user.has_permissions(ServicePermission.MANAGE_SERVICE) and form.users_with_permission.all_service_users %}
{{ form.users_with_permission }}
{% if form.platform_admins is defined and form.platform_admins %}
<p class="usa-hint">Platform admin can see all folders:</p>
<ul class="usa-hint usa-list">
{% for admin in form.platform_admins %}
<li>{{ admin.name }}</li>
{% endfor %}
</ul>
{% endif %}
{% endif %}
{{ page_footer(