Move filter out of class definition and change name of form field

This commit is contained in:
leigh-mil 2019-11-12 13:07:35 -05:00
parent ab9b62f54b
commit 9037c44498
4 changed files with 23 additions and 23 deletions

View File

@ -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(

View File

@ -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

View File

@ -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(

View File

@ -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"]