mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-10 01:55:41 -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
|
@login_required
|
||||||
@user_has_permissions('manage_templates')
|
@user_has_permissions('manage_templates')
|
||||||
def copy_template(service_id, template_id):
|
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(
|
template = service_api_client.get_service_template(from_service, str(template_id))['data']
|
||||||
request.args.get('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 (
|
if (
|
||||||
current_service.has_permission('edit_folder_permissions') and
|
current_service.has_permission('edit_folder_permissions') and
|
||||||
not current_user.has_template_folder_permission(template_folder)
|
not current_user.has_template_folder_permission(template_folder)
|
||||||
|
|||||||
@@ -229,7 +229,8 @@ def template_json(service_id,
|
|||||||
reply_to=None,
|
reply_to=None,
|
||||||
reply_to_text=None,
|
reply_to_text=None,
|
||||||
is_precompiled_letter=False,
|
is_precompiled_letter=False,
|
||||||
postage=None
|
postage=None,
|
||||||
|
folder=None
|
||||||
):
|
):
|
||||||
template = {
|
template = {
|
||||||
'id': id_,
|
'id': id_,
|
||||||
@@ -245,7 +246,7 @@ def template_json(service_id,
|
|||||||
'reply_to': reply_to,
|
'reply_to': reply_to,
|
||||||
'reply_to_text': reply_to_text,
|
'reply_to_text': reply_to_text,
|
||||||
'is_precompiled_letter': is_precompiled_letter,
|
'is_precompiled_letter': is_precompiled_letter,
|
||||||
'folder': None,
|
'folder': folder,
|
||||||
'postage': postage
|
'postage': postage
|
||||||
}
|
}
|
||||||
if content is None:
|
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(
|
def test_cant_copy_template_from_non_member_service(
|
||||||
client_request,
|
client_request,
|
||||||
mock_get_service_email_template,
|
mock_get_service_email_template,
|
||||||
|
|||||||
Reference in New Issue
Block a user