From 9bce22f76630e46a36ff06116e78055eb5af5a1f Mon Sep 17 00:00:00 2001 From: Tom Byers Date: Thu, 3 Jan 2019 14:58:20 +0000 Subject: [PATCH] Swap order of move_to validators If Optional runs before required_for_ops, it stops the validation chain so it doesn't get to required_for_ops. The move_to field isn't required for the 'move-to-new-folder' operation, so this has been removed. This also adds comments explaining why we set default to an empty string when instantiating the move_to field. --- app/main/forms.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/main/forms.py b/app/main/forms.py index c114a46fc..b3abce726 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -1285,12 +1285,15 @@ class TemplateAndFoldersSelectionForm(Form): templates_and_folders = MultiCheckboxField('Choose templates or folders', validators=[ required_for_ops('move-to-new-folder', 'move-to-existing-folder') ]) + # if no default set, it is set to None, which process_data transforms to '__NONE__' + # this means '__NONE__' (self.ALL_TEMPLATES option) is selected when no form data has been submitted + # set default to empty string so process_data method doesn't perform any transformation move_to = NestedRadioField( 'Choose a folder', default='', validators=[ - Optional(), - required_for_ops('move-to-new-folder', 'move-to-existing-folder') + required_for_ops('move-to-existing-folder'), + Optional() ]) 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')])