mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-09 17:45:32 -04:00
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:
@@ -138,6 +138,7 @@
|
|||||||
};
|
};
|
||||||
CollapsibleCheckboxes.prototype.toggleAll = function(e) {
|
CollapsibleCheckboxes.prototype.toggleAll = function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
const allChecked = this.$checkboxes.filter(':checked').length === this.$checkboxes.length;
|
const allChecked = this.$checkboxes.filter(':checked').length === this.$checkboxes.length;
|
||||||
|
|
||||||
if (allChecked) {
|
if (allChecked) {
|
||||||
|
|||||||
@@ -1726,10 +1726,14 @@ class TemplateFolderForm(StripWhitespaceForm):
|
|||||||
def __init__(self, all_service_users=None, *args, **kwargs):
|
def __init__(self, all_service_users=None, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
if all_service_users is not None:
|
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 = [
|
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(
|
users_with_permission = USWDSCollapsibleCheckboxesField(
|
||||||
"Team members who can see this folder", field_label="team member"
|
"Team members who can see this folder", field_label="team member"
|
||||||
|
|||||||
@@ -180,7 +180,10 @@ def process_folder_management_form(form, current_folder_id):
|
|||||||
|
|
||||||
if form.is_add_folder_op:
|
if form.is_add_folder_op:
|
||||||
new_folder_id = template_folder_api_client.create_template_folder(
|
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:
|
if form.is_move_op:
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ from app.notify_client import NotifyAdminAPIClient, cache
|
|||||||
|
|
||||||
class TemplateFolderAPIClient(NotifyAdminAPIClient):
|
class TemplateFolderAPIClient(NotifyAdminAPIClient):
|
||||||
@cache.delete("service-{service_id}-template-folders")
|
@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}
|
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)[
|
return self.post("/service/{}/template-folder".format(service_id), data)[
|
||||||
"data"
|
"data"
|
||||||
]["id"]
|
]["id"]
|
||||||
|
|||||||
@@ -86,13 +86,17 @@
|
|||||||
</ul>
|
</ul>
|
||||||
{% if current_service.all_template_folders %}
|
{% if current_service.all_template_folders %}
|
||||||
<p class="usa-body tick-cross-list-hint">
|
<p class="usa-body tick-cross-list-hint">
|
||||||
{% set folder_count = user.template_folders_for_service(current_service) | length %}
|
{% if user.platform_admin %}
|
||||||
{% if folder_count == 0 %}
|
Platform admin can see all folders
|
||||||
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 %}
|
{% 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 %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -27,6 +27,14 @@
|
|||||||
}) }}
|
}) }}
|
||||||
{% if current_user.has_permissions(ServicePermission.MANAGE_SERVICE) and form.users_with_permission.all_service_users %}
|
{% if current_user.has_permissions(ServicePermission.MANAGE_SERVICE) and form.users_with_permission.all_service_users %}
|
||||||
{{ form.users_with_permission }}
|
{{ 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 %}
|
{% endif %}
|
||||||
|
|
||||||
{{ page_footer(
|
{{ page_footer(
|
||||||
|
|||||||
@@ -1500,7 +1500,7 @@ def test_new_folder_is_created_if_only_new_folder_is_filled_out(
|
|||||||
|
|
||||||
assert mock_move_to_template_folder.called is False
|
assert mock_move_to_template_folder.called is False
|
||||||
mock_create_template_folder.assert_called_once_with(
|
mock_create_template_folder.assert_called_once_with(
|
||||||
SERVICE_ONE_ID, name="new folder", parent_id=None
|
SERVICE_ONE_ID, name="new folder", parent_id=None, created_by_id="6ce466d0-fd6a-11e5-82f5-e0accb9d11a6"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -1538,7 +1538,7 @@ def test_should_be_able_to_move_to_new_folder(
|
|||||||
)
|
)
|
||||||
|
|
||||||
mock_create_template_folder.assert_called_once_with(
|
mock_create_template_folder.assert_called_once_with(
|
||||||
SERVICE_ONE_ID, name="new folder", parent_id=None
|
SERVICE_ONE_ID, name="new folder", parent_id=None, created_by_id="6ce466d0-fd6a-11e5-82f5-e0accb9d11a6"
|
||||||
)
|
)
|
||||||
mock_move_to_template_folder.assert_called_once_with(
|
mock_move_to_template_folder.assert_called_once_with(
|
||||||
service_id=SERVICE_ONE_ID,
|
service_id=SERVICE_ONE_ID,
|
||||||
|
|||||||
@@ -429,6 +429,36 @@ describe('Collapsible fieldset', () => {
|
|||||||
expect(toggleButton.parentElement.style.display).toEqual('none');
|
expect(toggleButton.parentElement.style.display).toEqual('none');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("clicking 'Select all' does not collapse the fieldset", () => {
|
||||||
|
const toggleButton = document.querySelector('.usa-button--small');
|
||||||
|
const doneButton = formGroup.querySelector('.selection-footer__button');
|
||||||
|
|
||||||
|
expect(helpers.element(fieldset).is('hidden')).toBe(false);
|
||||||
|
expect(doneButton.getAttribute('aria-expanded')).toEqual('true');
|
||||||
|
|
||||||
|
helpers.triggerEvent(toggleButton, 'click');
|
||||||
|
|
||||||
|
expect(helpers.element(fieldset).is('hidden')).toBe(false);
|
||||||
|
expect(doneButton.getAttribute('aria-expanded')).toEqual('true');
|
||||||
|
expect(doneButton.textContent.trim()).toEqual("Done choosing folders");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("clicking 'Deselect all' does not collapse the fieldset", () => {
|
||||||
|
const toggleButton = document.querySelector('.usa-button--small');
|
||||||
|
const doneButton = formGroup.querySelector('.selection-footer__button');
|
||||||
|
|
||||||
|
helpers.triggerEvent(toggleButton, 'click');
|
||||||
|
|
||||||
|
expect(helpers.element(fieldset).is('hidden')).toBe(false);
|
||||||
|
expect(doneButton.getAttribute('aria-expanded')).toEqual('true');
|
||||||
|
|
||||||
|
helpers.triggerEvent(toggleButton, 'click');
|
||||||
|
|
||||||
|
expect(helpers.element(fieldset).is('hidden')).toBe(false);
|
||||||
|
expect(doneButton.getAttribute('aria-expanded')).toEqual('true');
|
||||||
|
expect(doneButton.textContent.trim()).toEqual("Done choosing folders");
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("toggle button visibility on re-expansion", () => {
|
describe("toggle button visibility on re-expansion", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user