From 97f663f99e37fbb22800f1910cf95faa25ed776f Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Tue, 4 Dec 2018 14:47:05 +0000 Subject: [PATCH] change operations to kebab-case so that they better align with the front-end, where they'll be used in data attributes. Also, making the kebab case is nice because it doesn't give favouritism to either JS or python naming conventions --- app/assets/javascripts/templateFolderForm.js | 18 +++++------ app/main/forms.py | 26 ++++++++-------- app/main/views/templates.py | 3 +- app/templates/views/templates/_move_to.html | 9 +++--- tests/app/main/views/test_template_folders.py | 30 +++++++++---------- tests/app/main/views/test_templates.py | 6 ++-- 6 files changed, 46 insertions(+), 46 deletions(-) diff --git a/app/assets/javascripts/templateFolderForm.js b/app/assets/javascripts/templateFolderForm.js index fde801504..722c2d368 100644 --- a/app/assets/javascripts/templateFolderForm.js +++ b/app/assets/javascripts/templateFolderForm.js @@ -50,7 +50,7 @@ // gross hack - pretend we're in the choose actions state, then pretend a checkbox was clicked to work out // whether to show zero or non-zero options. This calls a render at the end - this.currentState = 'nothingSelectedButtons'; + this.currentState = 'nothing-selected-buttons'; this.templateFolderCheckboxChanged(); }); @@ -67,12 +67,12 @@ this.templateFolderCheckboxChanged = function() { let numSelected = this.countSelectedCheckboxes(); - if (this.currentState === 'nothingSelectedButtons' && numSelected !== 0) { + if (this.currentState === 'nothing-selected-buttons' && numSelected !== 0) { // user has just selected first item - this.currentState = 'itemsSelectedButtons'; - } else if (this.currentState === 'itemsSelectedButtons' && numSelected === 0) { + this.currentState = 'items-selected-buttons'; + } else if (this.currentState === 'items-selected-buttons' && numSelected === 0) { // user has just deselected last item - this.currentState = 'nothingSelectedButtons'; + this.currentState = 'nothing-selected-buttons'; } this.render(); @@ -91,15 +91,15 @@ this.nothingSelectedButtons = `
- - + +
`; this.itemsSelectedButtons = `
- - + +
`; }; diff --git a/app/main/forms.py b/app/main/forms.py index a45644245..bc4a77b92 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -1165,11 +1165,11 @@ class TemplateAndFoldersSelectionForm(Form): * unknown currently not implemented, but in the future will try and work out if there are any obvious commands that can be assumed based on which fields are empty vs populated. - * move_to_existing_folder + * move-to-existing-folder must have data for templates_and_folders checkboxes, and move_to radios - * move_to_new_folder + * move-to-new-folder must have data for move_to_new_folder_name, cannot have data for move_to_existing_folder_name - * add_new_folder + * add-new-folder must have data for move_to_existing_folder_name, cannot have data for move_to_new_folder_name """ @@ -1218,9 +1218,9 @@ class TemplateAndFoldersSelectionForm(Form): def validate(self): self.op = request.form.get('operation') - self.is_move_op = self.op in {'move_to_existing_folder', 'move_to_new_folder'} - self.is_add_folder_op = self.op in {'add_new_folder', 'move_to_new_folder'} - self.is_add_template_op = self.op in {'add_template'} + self.is_move_op = self.op in {'move-to-existing-folder', 'move-to-new-folder'} + self.is_add_folder_op = self.op in {'add-new-folder', 'move-to-new-folder'} + self.is_add_template_op = self.op in {'add-new-template'} if not (self.is_add_folder_op or self.is_move_op or self.is_add_template_op): return False @@ -1228,23 +1228,23 @@ class TemplateAndFoldersSelectionForm(Form): return super().validate() def get_folder_name(self): - if self.op == 'add_new_folder': + if self.op == 'add-new-folder': return self.add_new_folder_name.data - elif self.op == 'move_to_new_folder': + elif self.op == 'move-to-new-folder': return self.move_to_new_folder_name.data return None templates_and_folders = MultiCheckboxField('Choose templates or folders', validators=[ - required_for_ops('move_to_new_folder', 'move_to_existing_folder') + required_for_ops('move-to-new-folder', 'move-to-existing-folder') ]) move_to = RadioFieldWithNoneOption('Choose a folder', validators=[ Optional(), - required_for_ops('move_to_new_folder', 'move_to_existing_folder') + required_for_ops('move-to-new-folder', 'move-to-existing-folder') ]) - add_new_folder_name = StringField('Folder name', validators=[required_for_ops('add_new_folder')]) - move_to_new_folder_name = StringField('Folder name', validators=[required_for_ops('move_to_new_folder')]) + add_new_folder_name = StringField('Folder name', validators=[required_for_ops('add-new-folder')]) + move_to_new_folder_name = StringField('Folder name', validators=[required_for_ops('move-to-new-folder')]) add_template_by_template_type = RadioFieldWithNoneOption('Add new', validators=[ Optional(), - required_for_ops('add_template') + required_for_ops('add-new-template') ]) diff --git a/app/main/views/templates.py b/app/main/views/templates.py index 5e4617ba9..151f301de 100644 --- a/app/main/views/templates.py +++ b/app/main/views/templates.py @@ -122,7 +122,6 @@ def choose_template(service_id, template_type='all', template_folder_id=None): len(user_api_client.get_service_ids_for_user(current_user)) > 1 ), ) - if request.method == 'POST' and templates_and_folders_form.validate_on_submit(): if not can_manage_folders(): abort(403) @@ -142,7 +141,7 @@ def choose_template(service_id, template_type='all', template_folder_id=None): template_nav_items=get_template_nav_items(template_folder_id), template_type=template_type, search_form=SearchTemplatesForm(), - templates_and_folders_form=templates_and_folders_form + templates_and_folders_form=templates_and_folders_form, ) diff --git a/app/templates/views/templates/_move_to.html b/app/templates/views/templates/_move_to.html index fc0676219..27e8f1124 100644 --- a/app/templates/views/templates/_move_to.html +++ b/app/templates/views/templates/_move_to.html @@ -3,16 +3,17 @@
+ {% if templates_and_folders_form.move_to.choices and template_list.templates_to_show %}
{{ radios(templates_and_folders_form.move_to) }} - {{ page_footer('Move', button_name='operation', button_value='move_to_existing_folder') }} + {{ page_footer('Move', button_name='operation', button_value='move-to-existing-folder') }}
Move to a new folder {{ textbox(templates_and_folders_form.move_to_new_folder_name) }} - {{ page_footer('Move to a new folder', button_name='operation', button_value='move_to_new_folder') }} + {{ page_footer('Move to a new folder', button_name='operation', button_value='move-to-new-folder') }}
{% endif %} @@ -20,14 +21,14 @@
Add a new folder {{ textbox(templates_and_folders_form.add_new_folder_name) }} - {{ page_footer('New folder', button_name='operation', button_value='add_new_folder') }} + {{ page_footer('New folder', button_name='operation', button_value='add-new-folder') }}
Add a new template {{ radios(templates_and_folders_form.add_template_by_template_type) }} - {{ page_footer('Continue', button_name='operation', button_value='add_template') }} + {{ page_footer('Continue', button_name='operation', button_value='add-new-template') }}
diff --git a/tests/app/main/views/test_template_folders.py b/tests/app/main/views/test_template_folders.py index 6f0ff26d2..977d77994 100644 --- a/tests/app/main/views/test_template_folders.py +++ b/tests/app/main/views/test_template_folders.py @@ -797,10 +797,10 @@ def test_should_show_radios_and_buttons_for_move_destination_if_correct_permissi ] assert set(x['value'] for x in page.find_all('button', {'name': 'operation'})) == { 'unknown', - 'move_to_existing_folder', - 'move_to_new_folder', - 'add_new_folder', - 'add_template', + 'move-to-existing-folder', + 'move-to-new-folder', + 'add-new-folder', + 'add-new-template', } @@ -821,7 +821,7 @@ def test_should_be_able_to_move_to_existing_folder( 'main.choose_template', service_id=SERVICE_ONE_ID, _data={ - 'operation': 'move_to_existing_folder', + 'operation': 'move-to-existing-folder', 'move_to': PARENT_FOLDER_ID, 'templates_and_folders': [ FOLDER_TWO_ID, @@ -868,7 +868,7 @@ def test_should_not_be_able_to_move_to_existing_folder_if_dont_have_permission( 'main.choose_template', service_id=SERVICE_ONE_ID, _data={ - 'operation': 'move_to_existing_folder', + 'operation': 'move-to-existing-folder', 'move_to': PARENT_FOLDER_ID, 'templates_and_folders': [ FOLDER_TWO_ID, @@ -900,7 +900,7 @@ def test_should_be_able_to_move_a_sub_item( service_id=SERVICE_ONE_ID, template_folder_id=PARENT_FOLDER_ID, _data={ - 'operation': 'move_to_existing_folder', + 'operation': 'move-to-existing-folder', 'move_to': '__NONE__', 'templates_and_folders': [GRANDCHILD_FOLDER_ID], }, @@ -917,35 +917,35 @@ def test_should_be_able_to_move_a_sub_item( @pytest.mark.parametrize('data', [ # move to existing, but add new folder name given { - 'operation': 'move_to_existing_folder', + 'operation': 'move-to-existing-folder', 'templates_and_folders': [], 'add_new_folder_name': 'foo', 'move_to': PARENT_FOLDER_ID }, # move to existing, but move to new folder name given { - 'operation': 'move_to_existing_folder', + 'operation': 'move-to-existing-folder', 'templates_and_folders': [TEMPLATE_ONE_ID], 'move_to_new_folder_name': 'foo', 'move_to': PARENT_FOLDER_ID }, # move to existing, but no templates to move { - 'operation': 'move_to_existing_folder', + 'operation': 'move-to-existing-folder', 'templates_and_folders': [], 'move_to_new_folder_name': '', 'move_to': PARENT_FOLDER_ID }, # move to new, but nothing selected to move { - 'operation': 'move_to_new_folder', + 'operation': 'move-to-new-folder', 'templates_and_folders': [], 'move_to_new_folder_name': 'foo', 'move_to': None }, # add a new template, but also select move destination { - 'operation': 'add_template', + 'operation': 'add-new-template', 'templates_and_folders': [], 'move_to_new_folder_name': '', 'move_to': PARENT_FOLDER_ID, @@ -953,7 +953,7 @@ def test_should_be_able_to_move_a_sub_item( }, # add a new template, but also move to root folder { - 'operation': 'add_template', + 'operation': 'add-new-template', 'templates_and_folders': [], 'move_to_new_folder_name': '', 'move_to': '__NONE__', @@ -1019,7 +1019,7 @@ def test_new_folder_is_created_if_only_new_folder_is_filled_out( data = { 'move_to_new_folder_name': '', 'add_new_folder_name': 'new folder', - 'operation': 'add_new_folder' + 'operation': 'add-new-folder' } service_one['permissions'] += ['edit_folders'] @@ -1066,7 +1066,7 @@ def test_should_be_able_to_move_to_new_folder( service_id=SERVICE_ONE_ID, template_folder_id=None, _data={ - 'operation': 'move_to_new_folder', + 'operation': 'move-to-new-folder', 'move_to_new_folder_name': 'new folder', 'templates_and_folders': [ FOLDER_TWO_ID, diff --git a/tests/app/main/views/test_templates.py b/tests/app/main/views/test_templates.py index 6ade834fc..09dee0ec0 100644 --- a/tests/app/main/views/test_templates.py +++ b/tests/app/main/views/test_templates.py @@ -616,7 +616,7 @@ def test_dont_show_preview_letter_templates_for_bad_filetype( 'template_type': 'copy-existing' }), ('main.choose_template', { - 'operation': 'add_template', + 'operation': 'add-new-template', 'add_template_by_template_type': 'copy-existing' }), )) @@ -791,7 +791,7 @@ def test_cant_copy_template_from_non_member_service( ( 'main.choose_template', { - 'operation': 'add_template', + 'operation': 'add-new-template', 'add_template_by_template_type': 'email', }, "Sending emails has been disabled for your service." @@ -799,7 +799,7 @@ def test_cant_copy_template_from_non_member_service( ( 'main.choose_template', { - 'operation': 'add_template', + 'operation': 'add-new-template', 'add_template_by_template_type': 'sms', }, "Sending text messages has been disabled for your service."