Change folder viewing permissions from manage folder page

This commit is contained in:
Pea Tyczynska
2019-03-15 17:19:18 +00:00
parent 1ab36dd026
commit e85969f6fa
6 changed files with 57 additions and 16 deletions

View File

@@ -438,10 +438,12 @@ def manage_template_folder(service_id, template_folder_id):
name=current_folder['name'],
users_with_permission=users_with_folder_permission
)
if form.validate_on_submit():
template_folder_api_client.update_template_folder(
current_service.id, template_folder_id, name=form.name.data
current_service.id,
template_folder_id,
name=form.name.data,
users_with_permission=form.viewing_permissions.data
)
return redirect(
url_for('.choose_template', service_id=service_id, template_folder_id=template_folder_id)

View File

@@ -42,10 +42,13 @@ class TemplateFolderAPIClient(NotifyAdminAPIClient):
))
@cache.delete('service-{service_id}-template-folders')
def update_template_folder(self, service_id, template_folder_id, name):
def update_template_folder(self, service_id, template_folder_id, name, users_with_permission=None):
data = {"name": name}
if users_with_permission:
data["users_with_permission"] = users_with_permission
self.post(
'/service/{}/template-folder/{}'.format(service_id, template_folder_id),
{"name": name}
data
)
@cache.delete('service-{service_id}-template-folders')

View File

@@ -3,10 +3,11 @@
{% macro checkbox(
field,
hint=False,
width='2-3'
width='2-3',
value='y'
) %}
<div class="multiple-choice">
{{ checkbox_input(field.id, field.name, field.data) }}
{{ checkbox_input(field.id, field.name, field.data, value) }}
<label for="{{ field.id }}">
{{ field.label.text }}
{% if hint %}
@@ -42,14 +43,17 @@
{% macro checkbox_group(
legend,
fields
fields,
set_value=False
) %}
<fieldset class="form-group">
<legend class="form-label">
{{ legend }}
</legend>
{% for field in fields %}
{{ checkbox(field) }}
{% endfor %}
{% if set_value %}
{% for field in fields %}
{{ checkbox(field, value=field.data) }}
{% endfor %}
{% endif %}
</fieldset>
{% endmacro %}

View File

@@ -25,7 +25,7 @@
{% call form_wrapper(action=url_for('main.manage_template_folder', service_id=current_service.id, template_folder_id=template_folder_id)) %}
{{ textbox(form.name) }}
{% if current_service.has_permission("edit_folder_permissions") %}
{{ checkbox_group("Users who can see this folder:", form.viewing_permissions) }}
{{ checkbox_group("Users who can see this folder:", form.viewing_permissions, set_value=True) }}
{% endif %}
{{ page_footer(

View File

@@ -454,7 +454,7 @@ def test_get_manage_folder_page(
assert "Users who can see this folder:" in form_labels[0].text
checkboxes = page.select('input[name=viewing_permissions]')
assert len(checkboxes) == 1
assert checkboxes[0]['value'] == 'y'
assert checkboxes[0]['value'] == active_user_with_permissions.id
assert "Test User" in page.findAll('label', {'for': 'viewing_permissions-0'})[0].text
@@ -494,7 +494,7 @@ def test_rename_folder(client_request, active_user_with_permissions, service_one
'main.manage_template_folder',
service_id=service_one['id'],
template_folder_id=folder_id,
_data={"name": "new beautiful name"},
_data={"name": "new beautiful name", "viewing_permissions": [active_user_with_permissions.id]},
_expected_redirect=url_for("main.choose_template",
service_id=service_one['id'],
template_folder_id=folder_id,
@@ -504,7 +504,39 @@ def test_rename_folder(client_request, active_user_with_permissions, service_one
mock_update.assert_called_once_with(
service_one['id'],
folder_id,
name="new beautiful name"
name="new beautiful name",
users_with_permission=[active_user_with_permissions.id]
)
def test_manage_folder_users(
client_request, active_user_with_permissions, service_one, mock_get_template_folders, mocker
):
mock_update = mocker.patch('app.template_folder_api_client.update_template_folder')
folder_id = str(uuid.uuid4())
mock_get_template_folders.return_value = [
{'id': folder_id, 'name': 'folder_two', 'parent_id': None, 'users_with_permission': [
active_user_with_permissions.id
]}
]
mocker.patch('app.models.service.Service.get_team_member', return_value=active_user_with_permissions)
client_request.post(
'main.manage_template_folder',
service_id=service_one['id'],
template_folder_id=folder_id,
_data={"name": "new beautiful name", "viewing_permissions": []},
_expected_redirect=url_for("main.choose_template",
service_id=service_one['id'],
template_folder_id=folder_id,
_external=True)
)
mock_update.assert_called_once_with(
service_one['id'],
folder_id,
name="new beautiful name",
users_with_permission=[]
)

View File

@@ -111,13 +111,13 @@ def test_update_template_folder_calls_correct_api_endpoint(mocker):
some_service_id = uuid.uuid4()
template_folder_id = uuid.uuid4()
expected_url = '/service/{}/template-folder/{}'.format(some_service_id, template_folder_id)
data = {'name': 'foo'}
data = {'name': 'foo', 'users_with_permission': ['some_id']}
client = TemplateFolderAPIClient()
mock_post = mocker.patch('app.notify_client.template_folder_api_client.TemplateFolderAPIClient.post')
client.update_template_folder(some_service_id, template_folder_id, name='foo')
client.update_template_folder(some_service_id, template_folder_id, name='foo', users_with_permission=['some_id'])
mock_post.assert_called_once_with(expected_url, data)
mock_redis_delete.assert_called_once_with('service-{}-template-folders'.format(some_service_id))