Merge pull request #2893 from alphagov/copy-service-folder

fix bug with copying template from folder in other service
This commit is contained in:
Leo Hemsted
2019-04-03 14:13:27 +01:00
committed by GitHub
3 changed files with 43 additions and 8 deletions

View File

@@ -386,15 +386,13 @@ def choose_template_to_copy(
@login_required
@user_has_permissions('manage_templates')
def copy_template(service_id, template_id):
from_service = request.args.get('from_service')
current_user.belongs_to_service_or_403(request.args.get('from_service'))
current_user.belongs_to_service_or_403(from_service)
template = service_api_client.get_service_template(
request.args.get('from_service'),
str(template_id),
)['data']
template = service_api_client.get_service_template(from_service, str(template_id))['data']
template_folder = template_folder_api_client.get_template_folder(service_id, template['folder'])
template_folder = template_folder_api_client.get_template_folder(from_service, template['folder'])
if (
current_service.has_permission('edit_folder_permissions') and
not current_user.has_template_folder_permission(template_folder)

View File

@@ -229,7 +229,8 @@ def template_json(service_id,
reply_to=None,
reply_to_text=None,
is_precompiled_letter=False,
postage=None
postage=None,
folder=None
):
template = {
'id': id_,
@@ -245,7 +246,7 @@ def template_json(service_id,
'reply_to': reply_to,
'reply_to_text': reply_to_text,
'is_precompiled_letter': is_precompiled_letter,
'folder': None,
'folder': folder,
'postage': postage
}
if content is None:

View File

@@ -1189,6 +1189,42 @@ def test_load_edit_template_with_copy_of_template(
)
def test_copy_template_loads_template_from_within_subfolder(
client_request,
active_user_with_permission_to_two_services,
mock_get_service_templates,
mock_get_non_empty_organisations_and_services_for_user,
mocker
):
template = template_json(
SERVICE_TWO_ID,
TEMPLATE_ONE_ID,
name='foo',
folder=PARENT_FOLDER_ID
)
mock_get_service_template = mocker.patch(
'app.service_api_client.get_service_template',
return_value={'data': template}
)
mock_get_template_folder = mocker.patch(
'app.template_folder_api_client.get_template_folder',
return_value=_folder('Parent folder', PARENT_FOLDER_ID),
)
client_request.login(active_user_with_permission_to_two_services)
page = client_request.get(
'main.copy_template',
service_id=SERVICE_ONE_ID,
template_id=TEMPLATE_ONE_ID,
from_service=SERVICE_TWO_ID,
)
assert page.select_one('input')['value'] == 'foo (copy)'
mock_get_service_template.assert_called_once_with(SERVICE_TWO_ID, TEMPLATE_ONE_ID)
mock_get_template_folder.assert_called_once_with(SERVICE_TWO_ID, PARENT_FOLDER_ID)
def test_cant_copy_template_from_non_member_service(
client_request,
mock_get_service_email_template,