mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-18 05:30:21 -04:00
Merge pull request #2893 from alphagov/copy-service-folder
fix bug with copying template from folder in other service
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user