diff --git a/app/main/forms.py b/app/main/forms.py index cceb12b59..9eab91803 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -713,7 +713,9 @@ class PermissionsForm(StripWhitespaceForm): (item['id'], item['name']) for item in ([{'name': 'Templates', 'id': None}] + all_template_folders) ] - folder_permissions = NestedCheckboxesField('Folders this team member can see') + folder_permissions = govukCollapsibleNestedCheckboxesField( + 'Folders this team member can see', + field_label='folder') login_authentication = RadioField( 'Sign in using', @@ -725,21 +727,23 @@ class PermissionsForm(StripWhitespaceForm): validators=[DataRequired()] ) - @property - def permissions(self): - return {role for role in roles.keys() if self[role].data is True} - - @property - def permissions_fields(self): - return (getattr(self, permission) for permission, _ in permissions) + permissions_field = govukCheckboxesField( + 'Permssions', + choices=[ + (value, label) for value, label in permissions + ], + param_extensions={ + "hint": {"text": "All team members can see sent messages."} + } + ) @classmethod def from_user(cls, user, service_id, **kwargs): return cls( **kwargs, **{ - role: user.has_permission_for_service(service_id, role) - for role in roles.keys() + "permissions_field": [ + role for role in roles.keys() if user.has_permission_for_service(service_id, role)] }, login_authentication=user.auth_type ) diff --git a/app/main/views/manage_users.py b/app/main/views/manage_users.py index 8102ba521..f404309fd 100644 --- a/app/main/views/manage_users.py +++ b/app/main/views/manage_users.py @@ -63,7 +63,7 @@ def invite_user(service_id): current_user.id, service_id, email_address, - form.permissions, + set(form.permissions_field.data), form.login_authentication.data, form.folder_permissions.data, ) @@ -102,7 +102,7 @@ def edit_user_permissions(service_id, user_id): if form.validate_on_submit(): user.set_permissions( service_id, - permissions=form.permissions, + permissions=set(form.permissions_field.data), folder_permissions=form.folder_permissions.data, ) if service_has_email_auth: diff --git a/app/templates/views/manage-users/permissions.html b/app/templates/views/manage-users/permissions.html index e6ee7637d..51169c37a 100644 --- a/app/templates/views/manage-users/permissions.html +++ b/app/templates/views/manage-users/permissions.html @@ -1,20 +1,10 @@ {% from "components/checkbox.html" import checkbox, checkboxes_nested %} {% from "components/radios.html" import radio, radios, conditional_radio_panel %} -
- - Permissions - - - All team members can see sent messages. - - {% for field in form.permissions_fields %} - {{ checkbox(field) }} - {% endfor %} -
+{{ form.permissions_field }} {% if form.folder_permissions.all_template_folders %} - {{ checkboxes_nested(form.folder_permissions, form.folder_permissions.children(), hide_legend=True, collapsible_opts={ 'field': 'folder' }) }} + {{ form.folder_permissions }} {% elif user and user.platform_admin %}

Platform admin users can access all template folders.