diff --git a/app/main/forms.py b/app/main/forms.py index dd4fe0403..c114a46fc 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -1287,6 +1287,7 @@ class TemplateAndFoldersSelectionForm(Form): ]) move_to = NestedRadioField( 'Choose a folder', + default='', validators=[ Optional(), required_for_ops('move-to-new-folder', 'move-to-existing-folder') diff --git a/app/main/views/templates.py b/app/main/views/templates.py index c0617dab0..ba12244dc 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -122,6 +122,7 @@ def choose_template(service_id, template_type='all', template_folder_id=None): len(user_api_client.get_service_ids_for_user(current_user)) > 1 ), ) + option_hints = {template_folder_id: 'current folder'} if request.method == 'POST' and templates_and_folders_form.validate_on_submit(): if not can_manage_folders(): @@ -149,7 +150,8 @@ def choose_template(service_id, template_type='all', template_folder_id=None): template_type=template_type, search_form=SearchTemplatesForm(), templates_and_folders_form=templates_and_folders_form, - move_to_children=templates_and_folders_form.move_to.children() + move_to_children=templates_and_folders_form.move_to.children(), + option_hints=option_hints ) diff --git a/app/templates/components/radios.html b/app/templates/components/radios.html index 84ac4bc2d..c2b8bde5c 100644 --- a/app/templates/components/radios.html +++ b/app/templates/components/radios.html @@ -43,11 +43,10 @@ option_hints={}, hide_legend=False ) %} - {% set disable = [current_option_id] %} {% call radios_wrapper( field, hint, disable, option_hints, hide_legend ) %} - {{ radio_list(child_map[None], child_map, disable) }} + {{ radio_list(child_map[None], child_map, disable, option_hints) }} {% endcall %} {% endmacro %} diff --git a/app/templates/views/templates/_move_to.html b/app/templates/views/templates/_move_to.html index 02c014c09..543905884 100644 --- a/app/templates/views/templates/_move_to.html +++ b/app/templates/views/templates/_move_to.html @@ -6,7 +6,7 @@ {% if templates_and_folders_form.move_to.choices and template_list.templates_to_show %}
- {{ radios_nested(templates_and_folders_form.move_to, move_to_children, current_option) }} + {{ radios_nested(templates_and_folders_form.move_to, move_to_children, option_hints=option_hints) }} {{ page_footer('Move', button_name='operation', button_value='move-to-existing-folder') }}
diff --git a/tests/app/main/views/test_template_folders.py b/tests/app/main/views/test_template_folders.py index 513b0dd66..229884dcf 100644 --- a/tests/app/main/views/test_template_folders.py +++ b/tests/app/main/views/test_template_folders.py @@ -882,6 +882,61 @@ def test_should_not_be_able_to_move_to_existing_folder_if_dont_have_permission( assert mock_move_to_template_folder.called is False +def test_move_folder_form_shows_current_folder_hint_when_in_a_folder( + client_request, + service_one, + mock_get_service_templates, + mock_get_template_folders, +): + service_one['permissions'] += ['edit_folders'] + mock_get_template_folders.return_value = [ + {'id': PARENT_FOLDER_ID, 'name': 'parent_folder', 'parent_id': None}, + {'id': CHILD_FOLDER_ID, 'name': 'child_folder', 'parent_id': PARENT_FOLDER_ID}, + ] + page = client_request.get( + 'main.choose_template', + service_id=SERVICE_ONE_ID, + template_folder_id=PARENT_FOLDER_ID, + _test_page_title=False + ) + + page.find("input", attrs={"name": "move_to", "value": PARENT_FOLDER_ID}) + + move_form_labels = page.find('div', id='move_to_folder_radios').find_all('label') + + assert len(move_form_labels) == 3 + assert normalize_spaces(move_form_labels[0].text) == 'All templates' + assert normalize_spaces(move_form_labels[1].text) == 'parent_folder current folder' + assert normalize_spaces(move_form_labels[2].text) == 'child_folder' + + +def test_move_folder_form_does_not_show_current_folder_hint_at_the_top_level( + client_request, + service_one, + mock_get_service_templates, + mock_get_template_folders, +): + service_one['permissions'] += ['edit_folders'] + mock_get_template_folders.return_value = [ + {'id': PARENT_FOLDER_ID, 'name': 'parent_folder', 'parent_id': None}, + {'id': CHILD_FOLDER_ID, 'name': 'child_folder', 'parent_id': PARENT_FOLDER_ID}, + ] + page = client_request.get( + 'main.choose_template', + service_id=SERVICE_ONE_ID, + _test_page_title=False + ) + + page.find("input", attrs={"name": "move_to", "value": PARENT_FOLDER_ID}) + + move_form_labels = page.find('div', id='move_to_folder_radios').find_all('label') + + assert len(move_form_labels) == 3 + assert normalize_spaces(move_form_labels[0].text) == 'All templates' + assert normalize_spaces(move_form_labels[1].text) == 'parent_folder' + assert normalize_spaces(move_form_labels[2].text) == 'child_folder' + + def test_should_be_able_to_move_a_sub_item( client_request, service_one,