diff --git a/atst/forms/application.py b/atst/forms/application.py index ea71d1e3..de6294cd 100644 --- a/atst/forms/application.py +++ b/atst/forms/application.py @@ -1,4 +1,4 @@ -from .forms import BaseForm +from .forms import BaseForm, remove_empty_string from wtforms.fields import StringField, TextAreaField, FieldList from wtforms.validators import Required, Optional from atst.forms.validators import ListItemRequired, ListItemsUnique @@ -9,7 +9,7 @@ class EditEnvironmentForm(BaseForm): name = StringField( label=translate("forms.environments.name_label"), validators=[Required()], - filters=[BaseForm.remove_empty_string], + filters=[remove_empty_string], ) @@ -17,12 +17,12 @@ class NameAndDescriptionForm(BaseForm): name = StringField( label=translate("forms.application.name_label"), validators=[Required()], - filters=[BaseForm.remove_empty_string], + filters=[remove_empty_string], ) description = TextAreaField( label=translate("forms.application.description_label"), validators=[Optional()], - filters=[BaseForm.remove_empty_string], + filters=[remove_empty_string], ) @@ -30,7 +30,7 @@ class EnvironmentsForm(BaseForm): environment_names = FieldList( StringField( label=translate("forms.application.environment_names_label"), - filters=[BaseForm.remove_empty_string], + filters=[remove_empty_string], ), validators=[ ListItemRequired( diff --git a/atst/forms/forms.py b/atst/forms/forms.py index 36bb7994..cd63b278 100644 --- a/atst/forms/forms.py +++ b/atst/forms/forms.py @@ -7,6 +7,14 @@ from atst.utils.flash import formatted_flash as flash EMPTY_LIST_FIELD = ["", None] +def remove_empty_string(value): + # only return strings that contain non whitespace characters + if value and re.search(r"\S", value): + return value.strip() + else: + return None + + class BaseForm(FlaskForm): def __init__(self, formdata=None, **kwargs): # initialize the form with data from the cache @@ -36,11 +44,3 @@ class BaseForm(FlaskForm): if not valid and flash_invalid: flash("form_errors") return valid - - @classmethod - def remove_empty_string(cls, value): - # only return strings that contain non whitespace characters - if value and re.search(r"\S", value): - return value.strip() - else: - return None diff --git a/atst/forms/portfolio.py b/atst/forms/portfolio.py index d9991471..307f463a 100644 --- a/atst/forms/portfolio.py +++ b/atst/forms/portfolio.py @@ -8,7 +8,7 @@ from wtforms.fields import ( from wtforms.validators import Length, Optional from wtforms.widgets import ListWidget, CheckboxInput -from .forms import BaseForm +from .forms import BaseForm, remove_empty_string from atst.utils.localization import translate from .data import ( @@ -49,7 +49,7 @@ class PortfolioCreationForm(BaseForm): translate("forms.task_order.defense_component_label"), choices=SERVICE_BRANCHES, default="", - filters=[BaseForm.remove_empty_string], + filters=[remove_empty_string], ) description = TextAreaField( @@ -85,7 +85,7 @@ class PortfolioCreationForm(BaseForm): complexity_other = StringField( translate("forms.task_order.complexity_other_label"), default=None, - filters=[BaseForm.remove_empty_string], + filters=[remove_empty_string], ) dev_team = SelectMultipleField( @@ -100,7 +100,7 @@ class PortfolioCreationForm(BaseForm): dev_team_other = StringField( translate("forms.task_order.dev_team_other_label"), default=None, - filters=[BaseForm.remove_empty_string], + filters=[remove_empty_string], ) team_experience = RadioField( diff --git a/tests/forms/test_base_form.py b/tests/forms/test_base_form.py index 5587649b..8f0c000e 100644 --- a/tests/forms/test_base_form.py +++ b/tests/forms/test_base_form.py @@ -2,7 +2,7 @@ import pytest from wtforms.fields import RadioField, FieldList, StringField from werkzeug.datastructures import ImmutableMultiDict -from atst.forms.forms import BaseForm +from atst.forms.forms import BaseForm, remove_empty_string class FormWithChoices(BaseForm): @@ -17,8 +17,8 @@ class FormWithChoices(BaseForm): class FormWithList(BaseForm): - list = FieldList( - StringField("a very fancy list", filters=[BaseForm.remove_empty_string]) + fancy_list = FieldList( + StringField("a very fancy list", filters=[remove_empty_string]) ) @@ -46,11 +46,11 @@ class TestBaseForm: [["testing", "", "QA"], ["testing", " ", "QA"], ["testing", None, "QA"]], ) def test_blank_list_items_removed(self, form_data): - form = FormWithList(list=form_data) + form = FormWithList(fancy_list=form_data) assert form.validate(flash_invalid=False) assert not form.data == ["testing", "QA"] def test_remove_empty_string_clips_whitespace(self): - form = FormWithList(list=[" QA", " testing "]) + form = FormWithList(fancy_list=[" QA", " testing "]) assert form.validate(flash_invalid=False) - assert form.list.data == ["QA", "testing"] + assert form.fancy_list.data == ["QA", "testing"]